Comment désactiver la redirection 301 qui ajoute une barre oblique au nom du répertoire dans Apache

Apache 2.2.20 redirige automatiquement toutes les requêtes qui sont des points vers des répertoires et n’a pas de barre oblique vers la même URL avec une barre oblique finale, comme indiqué ci-dessous:

GET /some/path/to/dir HTTP/1.1 Host: www.some.org ... 301 Moved permanently Location: http://www.some.org/some/path/to/dir/ 

Dans tous les cas, c’est un bon comportement, mais je dois désactiver cette fonctionnalité pour un dossier spécial (pas pour tous), et je ne trouve pas que je puisse le faire.

La recherche de règles ‘Rewrite’ indique que rien ne sert de directive LoadModule mod_rewrite.so. De plus, il n’y a pas de fichiers .htaccess dans les répertoires du serveur dans l’arborescence. Y a-t-il d’autres directives qui font quelque chose?

UPD1 J’essaie de configurer SVN via HTTP avec la prochaine configuration:

 LoadModule dav_svn_module /opt/libexec/mod_dav_svn.so LoadModule authz_svn_module /opt/libexec/mod_authz_svn.so NameVirtualHost *:8000  ServerAdmin [email protected] ServerName some.host.org DocumentRoot /path/to/wwwroot DAVLockDB /opt/var/lock/davlock/svndavlockdb  Options FollowSymLinks Indexes # #AllowOverride None Order allow,deny Allow from all   Options FollowSymLinks Indexes AllowOverride None Order allow,deny Allow from all  CustomLog /path/to/wwwroot/log/access_log.txt combined ErrorLog /path/to/wwwroot/log/error_log.txt  #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  Require valid-user    

UPD2 Il semble que la directive “DirectorySlash Off” ne fonctionne que pour “some.host.org/svn” et ne fonctionne pas pour “some.host.org/svn/repo1”, “some.host.org/svn/repo2”, etc. – Les répertoires enfants n’héritent pas de cette option.

UPD3 J’essaie d’append les lignes suivantes dans config, mais le résultat est identique – “DirectorySlash Off” ne fonctionne que pour “/ svn” et non pour les enfants.

  DirectorySlash Off  

RESOLU Problème résolu. C’est une erreur – j’ai placé la racine du référentiel SVN dans le dossier DocumentRoot, donc apache et web_dav ne peuvent pas comprendre qui doit gérer la requête. Cela s’applique au moins au client TortoiseSVN.

Commentaires des développeurs SVN:

Cela signifie que votre fichier httpd.conf est mal configuré. Généralement, cette erreur se produit lorsque vous avez défini l’emplacement virtuel de Subversion pour exister dans deux étendues différentes en même temps.

Par exemple, si vous avez exporté un référentiel en tant que, mais que vous avez également défini votre DocumentRoot sur / www, vous êtes en difficulté. Lorsque la requête arrive pour / www / foo / bar, apache ne sait pas s’il faut trouver un fichier réel nommé / foo / bar dans votre DocumentRoot, ou s’il faut demander à mod_dav_svn de récupérer un fichier / bar depuis / www / foo repository. Habituellement, le premier cas gagne, et donc l’erreur “Déplacé de manière permanente”.

La solution consiste à vous assurer que votre référentiel ne se chevauche pas ou ne réside pas dans des zones déjà exscopes en tant que partage Web normal.

Il est également possible que vous ayez un object dans la racine Web qui porte le même nom que l’URL de votre référentiel. Par exemple, imaginez que le répertoire racine de votre serveur Web soit / var / www et que votre référentiel Subversion se trouve dans / home / svn / repo. Vous configurez ensuite Apache pour qu’il serve le référentiel à l’ adresse http://local.host/myrepo . Si vous créez ensuite le répertoire / var / www / myrepo /, une erreur 301 se produira.

Utilisez la directive DirectorySlash de mod_dir. Exemple de docs:

 # see security warning in docs  DirectorySlash Off SetHandler some-handler  

Ajouter

 DirectorySlash Off 

à .htaccess a bien fonctionné pour moi.