Je veux rediriger toutes les pages de SiteA
vers la page d'accueil de SiteB
.
J'ai utilisé ce code dans le fichier .htaccess
de SiteA:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ https://SiteB.tld/ [R=301,L]
</IfModule>
Le code fonctionne parfaitement, mais pas pour les URL avec Question Mark
, telles que
https://SiteA.tld/?action=dayview&calendar=1&year=2000&month=01&day=01
Ces pages auront 404 Not Found
et ne seront pas redirigées vers le contenu de SiteB.
Quels changements dois-je apporter au code de redirection?
Vous devez ajouter l'indicateur "query string ignard" ou QSD
à votre règle de réécriture:
RewriteRule ^(.*)$ https://SiteB.tld/ [R=301,QSD,L]
De la documentation :
Lorsque l'URI demandé contient une chaîne de requête et que l'URI cible ne le contient pas, le comportement par défaut de RewriteRule consiste à copier cette chaîne de requête dans l'URI cible. L'utilisation de l'indicateur
[QSD]
permet de supprimer la chaîne de requête.Cet indicateur est disponible dans les versions 2.4.0 et supérieures.
Si vous utilisez
[QSD]
et[QSA]
ensemble,[QSD]
sera prioritaire.Si l'URI cible a une chaîne de requête, le comportement par défaut sera observé. En d'autres termes, la chaîne de requête d'origine sera ignorée et remplacée par la chaîne de requête dans l'URI cible
RewriteRule
.