重写:删除尾部斜线(只有一个!)

我使用mod_rewrite / .htaccess来创建漂亮的URL。

我使用这个条件/规则来消除尾部斜杠(或者更确切地说:通过301重定向重写到非尾随斜杠URL;我这样做是为了避免重复的内容,并且因为我喜欢没有尾随斜线的URL更好):

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

目前运作良好。 唯一的缺点:
它还会将“多行尾 - 斜线”-URL转发到非尾随斜杠-URL。

例:
http://example.tld/foo/bar//////转发至http://example.tld/foo/bar
而我只希望http://example.tld/foo/bar/转发到http://example.tld/foo/bar

那么,如果它实际上只是一个尾部斜线,是否有可能只消除尾部斜线?

对不起,如果这是一个有点烦人或怪异的问题!

谢谢。


以下规则将匹配以斜杠结尾的任何URL,并从其末尾删除所有斜杠:

RewriteRule ^(.*)/+$ $1 [R=301,L]

注意:目前接受的答案只适用于http而不是https,但这个适用于两者。


将重写规则更改为:

RewriteRule ^(.+[^/])/$ http://%{HTTP_HOST}/$1 [R=301,L]

用英文:匹配字符串的开头,一个或多个任何内容,而不是斜杠,斜杠,结尾。


^(.+[^/])/$

即前角色不能是斜线。

链接地址: http://www.djcxy.com/p/36533.html

上一篇: rewrite: remove trailing slash (only one!)

下一篇: How do I create and download a csv file using Javascript?