重定向无法按预期工作

时间:2015-11-25 11:02:27

标签: .htaccess mod-rewrite url-redirection apache2.2

我有一个包含多行的.htaccess文件。它没有按预期工作。 Mod_rewrite已启用。 RewriteLogLevel设置为9。 前两条规则禁止使用长度超过80个字符的uris:

RewriteCond %{REQUEST_URI} ^.{80}
RewriteRule .* - [F]

它似乎没有得到评估,因为每个测试网址都通过,它也不会产生错误。 我也尝试过:

RewriteRule .{80} - [F]

但这也没有成功。该过程以404结束,而不是403.

下一条规则也不起作用。它曾经工作过。

RewriteRule ^(\/)?([\w]+)$ /index.php [L]

URI / Contact始终由此index.php处理。 无论我输入什么网址,我都会得到404.我应该得到403或200.不是404.我错过了什么? Apache在所有目录上都具有读取,写入和执行权限,并且在所有文件上具有读写权限。

测试的两个网址是: 127.0.0.4/asssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssddddddddddddddddddddd?p=s&s=psv

127.0.0.4/Contact

使用127.0.0.4的别名是体贴的.lb。

2 个答案:

答案 0 :(得分:1)

请尝试使用此规则:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+\S{80}
RewriteRule ^ - [F]

使用THE_REQUEST代替REQUEST_URI,因为.htaccess中存在其他规则,该变量可能会被覆盖

答案 1 :(得分:0)

最后我找到了解决方案。问题不在于.htaccess的编码。我用以前的版本替换了文件,添加了新的行来测试请求,它运行良好。

这不是一个令人满意的解决方案,因为它可能再次发生,我不知道导致错误的原因。如果有人知道错误,我很想知道可能是什么原因以及如何正确解决。我想更改问题的标签,因为当前标签可能会产生误导(尽管其他人可能会遇到同样的问题,apache如何处理.htaccess文件),但我不知道应该使用哪些标签。