如何在使用htaccess的url域名后避免多个斜杠?

时间:2012-02-08 05:38:44

标签: .htaccess mod-rewrite

我有一个显示个人资料页面的链接http://mysite.com/myname ..但如果我使用多个

http://mysite.com///myname一样的斜杠,它也会显示页面..

我的htaccess代码是:

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

RewriteRule ^ profile.php?username=%1 [L,QSA]

如何避免这个问题?

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

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

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /[^/\s]+\ HTTP

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

答案 1 :(得分:0)

不确定为什么你真的想要阻止多个斜杠,但这是一种方法:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC]
RewriteRule ^ - [L,F]

这将给出Forbidden错误,一个URI在开始时有多个斜杠,如///myname将生成:

  

<强>禁止

     

您无权访问此服务器上的/ myname。

答案 2 :(得分:0)

使用此代码从网址中删除双斜杠。

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

一旦工作正常,将302改为301。