J'ai des problèmes avec les redirections et je n'ai pas réussi à faire en sorte que cela fonctionne. Je veux faire le suivant
http://www.example.com/seasonal/christmas?p=15
rediriger vers
http://www.example.com/holiday-decor/christmas.html
Je me demandais si quelqu'un pourrait m'aider avec la règle de réécriture afin que la chaîne de requête n'apparaisse pas dans l'URL redirigée. J'utilise . Htaccess avec un site de plate-forme Magento.
Par défaut, la chaîne de requête sur l'URL demandée est ajoutée à l'URL réécrite/redirigée.
Sur Apache 2.4 +, vous devez utiliser le drapeau QSD
(Query String Discard) de la directive RewriteRule
pour ignorer la chaîne de requête de l'URL redirigée. Par exemple:
RewriteCond %{QUERY_STRING} =p=15
RewriteRule ^seasonal/christmas$ /holiday-decor/christmas.html [QSD,R=301,L]
La directive RewriteCond
est requise pour faire correspondre la partie chaîne de requête de l'URL demandée. (L'URL correspondant au modèle RewriteRule
est uniquement le chemin d'URL, ce qui exclut notamment la chaîne de requête.) Le préfixe =
du CondPattern =p=15
indique une correspondance littérale "chaîne" (par opposition à une expression régulière), de sorte qu'elle corresponde exactement à p=15
.
Sous Apache 2.2 et versions antérieures vous auriez plutôt besoin d'ajouter un ?
à la fin de la substitution RewriteRule
pour supprimer la chaîne de requête. Cela écrit essentiellement une chaîne de requête vide (le ?
ne fait pas réellement partie de l'URL redirigée). Notez qu'en ajoutant toute chaîne de requête à la chaîne , vous écrasez la chaîne de requête dans la requête. (Si vous deviez également ajouter la chaîne de requête d'origine dans cette situation, vous avez besoin de l'indicateur QSA
- Query String Append - mais sinon, cet indicateur n'est pas requis.)
Par exemple, sur Apache 2.2, vous modifierez la directive RewriteRule
ci-dessus pour lire:
RewriteRule ^seasonal/christmas$ /holiday-decor/christmas.html? [R=301,L]
NB: Ajouter le ?
fonctionne également sur Apache 2.4. Bien que l'utilisation de l'indicateur QSD
soit préférable. Les deux méthodes ne sont pas identiques.