微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mod_rewrite:删除尾部斜线只有一个!

我使用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结构相同

使用htaccess从url中删除.PHP

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

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

谢谢。

RewriteCond在.htaccess否定正则expression式不起作用?

configuration.htaccess以使用PHP框架(Silex)

获取页面ID值并通过.htaccess在URL中显示

需要一些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 **。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐