我将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]
到目前为止运作良好 . 唯一的缺点:
它还将"multiple-trailing-slash" -URL转发给非尾随斜杠网址 .
例:http://example.tld/foo/bar//////
前往 http://example.tld/foo/bar
虽然我只想 http://example.tld/foo/bar/
转发到 http://example.tld/foo/bar
.
那么,如果它实际上只是一个斜杠,是否可以只消除尾部斜杠?
对不起,如果这是一个有点烦人或怪异的问题!
谢谢 .
4 回答
以下规则将匹配以斜杠结尾的任何URL,并从其末尾删除所有斜杠:
注意:当前接受的答案仅适用于http而非https,但这一个适用于两者 .
将重写规则更改为:
英文:匹配字符串的开头,一个或多个任何东西,不是斜线,斜线,结束 .
即forelast字符不能是斜线 .
这是一个基于mod-alias的解决方案,用于从URL中删除尾部斜杠:
您可以在htaccess或server.config文件中使用上述Redirect .
这会将 /uri/ 重定向到* / uri ** .