【发布时间】:2014-01-17 09:01:02
【问题描述】:
您好,我的服务器出现问题。我有 4 个指向网页的入站链接,如下所示:
myurl.com/default/page.php%3Fid%3D13
它们应该看起来像这样:
myurl.com/default/page.php?id=13
我需要做什么才能实现这一目标?当您访问编码的 url 链接时,Apache 会吐出 404 错误
【问题讨论】:
您好,我的服务器出现问题。我有 4 个指向网页的入站链接,如下所示:
myurl.com/default/page.php%3Fid%3D13
它们应该看起来像这样:
myurl.com/default/page.php?id=13
我需要做什么才能实现这一目标?当您访问编码的 url 链接时,Apache 会吐出 404 错误
【问题讨论】:
一个可能的解决方案(虽然我不会说这是一个好的解决方案)是设置一个尝试解码 URL 的 404 处理程序。也许你可以做一些花哨的匹配来尝试猜测 404 是否是由于 URL 被编码。
if(stripos($url, '%3F') !== false){
header('Location: ' . urldecode($url) );
exit;
}
【讨论】:
nginx 将请求的文件名与 args 分开,并对规范化的 URI 进行操作,因此,在 location 和 rewrite 的第一个参数中,%3F 部分只能与 ? 直接匹配字符(而来自请求的显式 ? 永远不会在这里弥补),因此:
rewrite ^/([^?]*)\?(.*)$ /$1?$2? permanent;
【讨论】: