我使用mod_rewrite / .htaccess漂亮的url。
我正在使用这个条件/规则来消除尾随斜杠(或者说:通过301redirect重写到非尾随斜杠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 。
如何使用.htaccess文件将所有stream量从一个域redirect到另一个域?
CodeIgniter PHP的Apache 500内部服务器错误
查询string和Mod重写
.htaccess 301从旧域redirect到新域,而页和url结构相同
那么,如果实际上只是一个尾随斜线,是否可能只消除尾部的斜线?
对不起,如果这是一个有点烦人或怪异的问题!
谢谢。
RewriteCond在.htaccess否定正则expression式不起作用?
configuration.htaccess以使用PHP框架(Silex)
需要一些Apache的mod重写问题的帮助
Hello World使用mod_wsgi,内部错误,configuration错误
以下规则将匹配任何以斜线结尾的URL,并从其末尾删除所有斜杠:
RewriteRule ^(.*)/+$ $1 [R=301,L]
注意:目前接受的答案只适用于http而不是https,但是这个适用于两者。
将重写规则更改为:
RewriteRule ^(.+[^/])/$ http://%{HTTP_HOST}/$1 [R=301,L]
用英文:匹配字符串的开始,一个或多个任何东西,而不是斜杠,斜线,结尾。
^(.+[^/])/$
也就是说,前角色不能是斜线。
这是一个基于mod-alias的解决方案,用于从URL删除尾部斜杠:
RedirectMatch ^/(.*?)/$ /$1
你可以在你的htaccess或server.config文件中使用上面的重定向。
这将重定向/ uri /到* / uri **。