web-dev-qa-db-fra.com

Comment rediriger toutes les pages du site A, y compris celles comportant des chaînes de requête, vers la page d'accueil du site B

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?

2
Pasakgroup

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.

2