J'ai un RewriteRule
de type CMS standard installé dans mon .htaccess:
RewriteRule ^(.+)$ index.php?slug=$1
Disons que j'ai un répertoire appelé foo
dans le répertoire racine. Pour une raison quelconque, si vous cliquez sur la page, une redirection est générée:
http://example.com/foo
redirige vers http://example.com/foo?slug=foo
La suppression du répertoire résout le problème, mais malheureusement, ce n'est pas une option. Quelqu'un connaît-il une solution de rechange?
Essayer,
DirectorySlash off
Ce n'est pas la réécriture générant la redirection mais mod_dir
.
Avant le RewriteRule
mis:
RewriteCond %{REQUEST_FILENAME} !-d
Cela vérifiera si le répertoire foo
existe, sinon il ne créera pas de règle de réécriture.
Aussi, je ne suis pas sûr de savoir comment vous êtes arrivé à foo?slug=foo
à partir de la destination de redirection index.php?slug=$1
?
Ok, j'ai vérifié, vous aurez besoin d'un jeu de règles supplémentaire avant celui-ci pour corriger les manquants /
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)$ index.php?slug=%{REQUEST_URI} [QSA,L]
Cela devrait fonctionner comme un charme.