我有一个显示个人资料页面的链接http://mysite.com/myname
..但如果我使用多个
像http://mysite.com///myname
一样的斜杠,它也会显示页面..
我的htaccess代码是:
RewriteCond %{REQUEST_URI} ^/(\w+)/?$ [NC]
RewriteRule ^ profile.php?username=%1 [L,QSA]
如何避免这个问题?
有人可以帮助我吗?
答案 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。