我对来自acces_log的一些网址有疑问。有一些来自外部网站的网址链接我,例如http://domain.com/url_name.htm%(是的,带有%)。
然后......我的服务器返回http错误,我需要将这个假URL重定向到正确的方式,我想在htaccess中。
我只需要检测URL的最后一个字符中的%符号,并在没有它的情况下重定向。 http://domain.com/url_name.htm% - > http://domain.com/url_name.htm
我该怎么做?我试着用一些样品吗?符号,但我没有幸运。
谢谢!
答案 0 :(得分:1)
我已经找到了错误......
似乎某些格式错误的网址没有传递给vhost,然后这些请愿文件没有读取.htaccess。
解决这个问题的唯一方法是在httpd.conf中添加ErrorDocument 400指令...不是具有不同虚拟主机的服务器的最佳选择..因为所有的都会有相同的行为...但我认为这是这种情况的唯一方法。
来自Apache documentation的报价:
虽然可以覆盖大多数错误消息,但在某些情况下,无论ErrorDocument的设置如何,都会使用>内部消息。特别是,如果检测到>格式错误的请求,则将立即停止正常请求处理并返回>内部错误消息。这对于防止由不良请求引起的安全问题是必要的。
非常感谢!!
答案 1 :(得分:0)
此页面对.htaccess规则非常有帮助。 http://www.helicontech.com/isapi_rewrite/doc/RewriteRule.htm
我看到了一些使用小型PHP脚本的解决方案。 IE这个替换#
.htaccess
RewriteRule old.php redirect.php? url=http://example.com/new.php|hash [R=301,QSA,L]
redirect.php
<?php
$new_url = str_replace("|", "#", $_GET['url']);
header("Location: ".$new_url, 301);
die;
?>