Я видел много людей, имеющих эту проблему, и, похоже, единственный способ остановить апач, обрабатывающий кодированный амперсанд и URL-адрес амперсанда, - это использовать флаг mod rewrite B, RewriteRule^(. *) $ index.php? path = $ 1 [L, QSA, B].Использование амперсанда в хороших URL-адресах URL-адрес
Однако это не доступно в более ранних версиях apache и должно быть установлено, что также не поддерживается некоторыми хостинговыми компаниями.
Я нашел решение, которое хорошо работает для нас. У нас есть Адрес/Поиск/Результаты/Вынос + еда/Inverchorachan + Аргайл + & + Бьют +
Это, очевидно, нарушает URL в & дает нам/поиск/результаты/Вынос + Продукты/Inverchorachan + Аргайл, который затем дает ошибка 404, так как такой страницы нет.
URL-адрес хранится в массиве $ _GET ['url']. Если он находит &, он разбивает массив для каждого амперсанда.
Следующий код объединяет URL-адрес, перемещая массив $ _GET для каждой части.
Я хотел бы знать, есть ли у этого какие-либо скрытые проблемы, о которых я, возможно, и не подозреваю.
Код:
$newurl = "";
foreach($_GET as $key=>$pcs) {
if($newurl=="")
$newurl = $pcs;
else
$newurl .= "& ".rtrim($key,"_");
}
//echo $newurl;exit;
if($newurl!='') $url=$newurl;
Я обрезка подчеркивания от части, как добавил этот апач. Не знаю, почему, но любая помощь в этом была бы замечательной.
Возможно, связано, но вы должны избежать этого и в URL-адресе. – Joe