Jak wyłączyć przekierowanie 301, które dodaje końcowy ukośnik do nazwy katalogu w Apache

Apache 2.2.20 automatycznie przekierowuje wszystkie żądania, które są punktami do katalogów, i nie ma ukośnego ukośnika na ten sam adres URL z końcowym ukośnikiem, jak pokazano poniżej:

GET /some/path/to/dir HTTP/1.1
Host: www.some.org
...

301 Moved permanently
Location: http://www.some.org/some/path/to/dir/

We wszystkich przypadkach jest to dobre zachowanie, ale muszę wyłączyć tę funkcję dla jednego specjalnego folderu (nie dla wszystkich) i nie mogę go znaleźć, jeśli mogę to zrobić.

Wyszukiwanie reguł „Rewrite” mówi, że nic nie znajduje - tylko dyrektywa LoadModule mod_rewrite.so. Ponadto nie ma plików .htaccess na serwerze katalogów w drzewie katalogów. Czy są jakieś inne dyrektywy, które powodują?

UPD1 Próbuję skonfigurować SVN przez HTTP z następną konfiguracją:

LoadModule dav_svn_module     /opt/libexec/mod_dav_svn.so
LoadModule authz_svn_module   /opt/libexec/mod_authz_svn.so

NameVirtualHost *:8000
<VirtualHost *:8000>
    ServerAdmin [email protected]
    ServerName some.host.org
    DocumentRoot /path/to/wwwroot
    DAVLockDB /opt/var/lock/davlock/svndavlockdb

   <Directory /path/to/wwwroot>
        Options FollowSymLinks Indexes
#        #AllowOverride None
        Order allow,deny
        Allow from all
   </Directory>

   <Directory /path/to/wwwroot/svn>
        Options FollowSymLinks Indexes
        AllowOverride None
        Order allow,deny
        Allow from all
   </Directory>

    CustomLog /path/to/wwwroot/log/access_log.txt combined
    ErrorLog  /path/to/wwwroot/log/error_log.txt

    <Location /svn>

        #AllowOverride None
        #RewriteEngine Off
        #RewriteOptions AllowNoSlash
        DirectorySlash Off

        DAV svn
        SVNParentPath /path/to/wwwroot/svn
#        SVNListParentPath on

        AuthType Basic
        AuthName "Subversion Repository"
        AuthBasicAuthoritative Off
        AuthUserFile /path/to/wwwroot/svn/.htauthfile
        <Limit GET OPTIONS REPORT PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
            Require valid-user
        </Limit>
    </Location>

</VirtualHost>

UPD2 Wydaje się, że dyrektywa „DirectorySlash Off” działa tylko dla „some.host.org/svn” i nie działa dla „some.host.org/svn/repo1”, „some.host.org/svn/repo2” itp. katalogi potomne nie dziedziczą tej opcji.

UPD3 Próbuję dodać następujące linie do config, ale wynik jest taki sam - „DirectorySlash Off” działa tylko dla „/ svn”, a nie dla dzieci.

<LocationMatch "/svn/.*">
    DirectorySlash Off
</LocationMatch>

ROZWIĄZANY Problem rozwiązany. To mój błąd - umieściłem katalog główny repozytorium SVN w folderze DocumentRoot, więc apache i web_dav nie mogą zrozumieć, kto musi obsługiwać żądania. Dotyczy to przynajmniej klienta TortoiseSVN.

Komentarze deweloperów SVN:

Oznacza to, że httpd.conf jest źle skonfigurowany. Zwykle ten błąd występuje, gdy wirtualna „lokalizacja” Subversion została zdefiniowana w dwóch różnych zakresach jednocześnie.

Na przykład, jeśli wyeksportowałeś repozytorium jako, ale ustawiłeś także DocumentRoot na / www, to masz kłopoty. Gdy pojawi się żądanie dla / www / foo / bar, apache nie wie, czy znaleźć w pliku DocumentRoot prawdziwy plik o nazwie / foo / bar, czy też poprosić mod_dav_svn o pobranie pliku / paska ze strony / www / foo magazyn. Zwykle poprzedni przypadek wygrywa, a więc błąd „Przeniesiony na stałe”.

Rozwiązaniem jest upewnienie się, że twoje repozytorium nie pokrywa się lub nie znajduje się w obszarze już wyeksportowanym jako zwykłe udziały w sieci.

Możliwe jest również, że masz obiekt w katalogu głównym, który ma taką samą nazwę jak adres URL repozytorium. Na przykład, wyobraź sobie, że katalogiem głównym twojego serwera jest / var / www, a twoje repozytorium Subversion znajduje się w / home / svn / repo. Następnie konfigurujesz Apache, aby obsługiwał repozytorium whttp://local.host/myrepo. Jeśli następnie utworzysz katalog / var / www / myrepo / spowoduje to błąd 301.

questionAnswers(2)

yourAnswerToTheQuestion