2010-06-21 4 views
0

J'utilise mod_rewrite/.htaccess pour les jolies URL. J'utilise cette condition/règle pour éliminer les barres obliques finales (ou plutôt: réécrire l'URL non-trailing-slash, par une redirection 301, pour éviter les doublons et parce que j'aime les URL sans barre oblique inférieure):mod_rewrite: supprimer le slash de fin (un seul!)

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} !^\.localhost$ [NC] 
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]

Fonctionne bien jusqu'à maintenant. Seul inconvénient:
il avance également "multiple-trailing-slash" -URL à non-trailing-slash-URLs.

Exemple:
http://example.tld/foo/bar////// vers l'avant à http://example.tld/foo/bar
alors que je ne veux que http://example.tld/foo/bar/ de transmettre à http://example.tld/foo/bar.

Donc, est-il possible d'éliminer uniquement les barres obliques de fin de ligne si c'est effectivement juste une barre oblique de fin de course? Désolé, c'est une question un peu ennuyante ou étrange!

Merci.

+0

$ pourquoi poser la même question? http://stackoverflow.com/questions/3068091/mod-rewrite-remove-trailing-slash-only-one – unbeli

Répondre

0

Essayez ce modèle s'il vous plaît

^(. + [^ /])/$ Au lieu de^(. +)/

+0

N'a pas fonctionné, pas de différence. – user367217

+0

Je suppose que c'est à cause de la boucle. Essayez de définir l'option maxredirect. Pour les détails, suivez le lien. http://articles.sitepoint.com/print/mod_rewrite-no-endless-loops –

Questions connexes