重写:删除尾部斜线(只有一个!)
我使用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?