J'ai vu beaucoup de gens ayant ce problème et il semble que la seule façon d'arrêter Apache traitant l'esperluette encodée et une esperluette d'URL est-elle d'utiliser le drapeau de réécriture B, RewriteRule^(. * $ index.php? path = $ 1 [L, QSA, B]. Cependant, ceci n'est pas disponible dans les versions antérieures d'Apache et doit être installé, ce qui n'est pas non plus supporté par certaines sociétés d'hébergement.Utilisation de l'esperluette dans de jolies URL URL
J'ai trouvé une solution qui fonctionne bien pour nous. Nous avons une url/recherche/résultats/à emporter + Foods/Inverchorachan, + Argyll + & + Bute +
Ce casse évidemment l'url à & nous donner/Recherche/résultats/Plats à emporter + Foods/Inverchorachan, + Argyll qui donne alors une erreur 404 car il n'y a pas une telle page.
L'URL est contenue dans le tableau $ _GET ['url']. S'il trouve un &, il divise le tableau pour chaque perluète.
Le code suivant restitue l'URL en parcourant le tableau $ _GET pour chaque pièce.
Je voudrais savoir si cela a des problèmes cachés dont je ne suis peut-être pas au courant.
Le code:
$newurl = "";
foreach($_GET as $key=>$pcs) {
if($newurl=="")
$newurl = $pcs;
else
$newurl .= "& ".rtrim($key,"_");
}
//echo $newurl;exit;
if($newurl!='') $url=$newurl;
Je parage le trait de soulignement de la pièce comme apache ajouté. Je ne sais pas pourquoi, mais toute aide serait formidable.
Peut-être connecté, mais vous devriez échapper cela et dans l'URL. – Joe