2

我对我的 acces_log 中的一些 URL 有疑问。有一些来自外部站点的 URL 链接我,例如http://domain.com/url_name.htm%(是的,带有 %)。

然后......我的服务器返回http错误,我需要将这个假URL重定向到正确的方式,我在htaccess中思考。

我只需要检测 URL 最后一个字符中的 % 符号,并在没有它的情况下重定向。 http://domain.com/url_name.htm% --> http://domain.com/url_name.htm

我怎样才能做到这一点?我正在尝试一些样品?符号,但我没有幸运。

谢谢!

4

2 回答 2

1

我已经发现错误了...

似乎某些格式错误的 URL 不会传递给 vhost,然后这些请愿书不会读取 .htaccess。

解决这个问题的唯一方法是在 httpd.conf 中添加 ErrorDocument 400 指令......对于具有不同虚拟主机的服务器来说,这不是最佳选择......因为所有这些都将具有相同的行为......但我认为这是这种情况的唯一方法。

来自Apache 文档的引用:

尽管可以覆盖大多数错误消息,但在某些情况下,无论 ErrorDocument 的设置如何,都会使用 >internal 消息。特别是,如果检测到格式错误的请求,将立即停止正常的请求处理并返回 >internal 错误消息。这是防止由错误请求引起的安全问题所必需的。

不管怎么说,还是要谢谢你!!

于 2012-10-25T14:53:19.660 回答
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;
?>
于 2012-10-25T14:25:50.070 回答