2015-11-25 200 views
0

我有一个带有几行的.htaccess文件。它没有按预期工作。 Mod_rewrite已启用。 RewriteLogLevel设定为9 前两个规则有具有长度禁止URI的详细然后80个字符:重定向不能按预期工作

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

它似乎没有得到评价为每个测试URL穿过并且它不产生一个错误也是。 我也试过:

RewriteRule .{80} - [F] 

但是这并没有这样的伎俩无论是。该过程以404而不是403结束。

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

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

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

两个URL进行测试是: 127.0.0.4/asssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssddddddddddddddddddddd?p=s & S = PSV

127.0.0.4/Contact

用于127.0.0.4别名是体贴的。

回答

1

试试这个规则来代替:

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

使用THE_REQUEST而不是REQUEST_URI作为变量可能会被覆盖因您的.htaccess

+0

谢谢,但它没有任何区别。 –

+0

我添加了两个在我的问题中使用的网址。 considerate.lb和127.0.0.4之间的映射完美。您作为答案的规则是文件中的第一条规则。你的规则不会解决为什么第二个url(/ Contact)不起作用的问题。你有什么想法,为什么两个规则不起作用? –

+0

完全相同的规则适用于我的Apache。您必须首先确保.htaccess正在使用中。要验证您的'.htaccess'是否启用,在您的'.htaccess'上放置相同的垃圾(随机)文本,并查看当您在浏览器中访问您的页面时是否生成500(内部服务器)错误? – anubhava

0

其他规则的存在。最后我找到了解决办法。问题不在于.htaccess的编码中。我用以前的版本替换了该文件,添加了新行以测试请求,并且它工作得很好。

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