.htaccess 如何使用htaccess避免url中域名后出现多个斜杠?

.htaccess 如何使用htaccess避免url中域名后出现多个斜杠?,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我有一个链接http://mysite.com/myname显示配置文件页面。。但是如果我使用多个 像http://mysite.com///myname,它还显示页面 我的访问代码是: RewriteCond %{REQUEST_URI} ^/(\w+)/?$ [NC] RewriteRule ^ profile.php?username=%1 [L,QSA] 如何避免这个问题 有人能帮我吗?如果您想确保不将多个正斜杠视为一个斜杠(这似乎是默认的Apache行为,而不是任何类型的错误或错误

我有一个链接
http://mysite.com/myname
显示配置文件页面。。但是如果我使用多个

http://mysite.com///myname
,它还显示页面

我的访问代码是:

RewriteCond %{REQUEST_URI} ^/(\w+)/?$ [NC]

RewriteRule ^ profile.php?username=%1 [L,QSA]
如何避免这个问题


有人能帮我吗?

如果您想确保不将多个正斜杠视为一个斜杠(这似乎是默认的Apache行为,而不是任何类型的错误或错误重写的结果),可以添加以下内容


这应该强制执行单斜杠规则。当然,这也会使像
http://example.com/myname/edit
,但如果需要,可以使用更复杂的正则表达式来解决这个问题。

不确定为什么要阻止多个斜杠,但这里有一种方法:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC]
RewriteRule ^ - [L,F]
如果URI在开始时有多个斜杠,如
///myname
将生成:

禁止

您没有在此服务器上访问/myname的权限


使用此代码可以从URL中删除双斜杠

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} //
RewriteRule ^ $0 [R=302]

一旦开始工作,请将302更改为301。

您的
.htaccess
中有一些错误的重写。我的htaccess代码是:RewriteCond%{REQUEST\u URI}^/(\w+/?NC]RewriteRule^profile.php?用户名=%1[L,QSA]。。有什么问题吗?@David:Ma问题是,即使域后有多个斜杠,它也会显示个人资料页。。。。但我不想在这种情况下显示个人资料页..嗯,我在正确测试后发布了它。你能在你的问题中发布你的完整的.htaccess吗(不是在评论中)。你应该在其他重写之前添加这个。如果这样做不起作用,我就没有解释了,因为@anubhava的答案或我的答案都应该很好。
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} //
RewriteRule ^ $0 [R=302]