我见过很多人遇到这个问题,似乎阻止 apache 处理编码的 & 和 URL & 的唯一方法是使用 mod rewrite B 标志,RewriteRule ^(.*)$ index.php?path=$1 [ L,QSA,B]。
但是,这在早期版本的 apache 中不可用,并且必须安装,一些托管公司也不支持。
我找到了一个适合我们的解决方案。我们的网址是 /search/results/Takeaway+Foods/Inverchorachan,+Argyll+&+Bute+
这显然破坏了 & 给我们 /search/results/Takeaway+Foods/Inverchorachan,+Argyll 的 url,然后给出 404 错误,因为没有这样的页面。
url 保存在 $_GET['url'] 数组中。如果它找到一个 & ,它会为每个 & 符拆分数组。
以下代码通过遍历每个片段的 $_GET 数组将 URL 重新组合在一起。
我想知道这是否有任何我可能不知道的隐藏问题。
编码:
$newurl = "";
foreach($_GET as $key=>$pcs) {
if($newurl=="")
$newurl = $pcs;
else
$newurl .= "& ".rtrim($key,"_");
}
//echo $newurl;exit;
if($newurl!='') $url=$newurl;
当 apache 添加这个时,我正在修剪下划线。不知道为什么,但对此的任何帮助都会很棒。