J'ai 2 URL. Fondamentalement page et sous page comme ci-dessous.
http://example.com/services
http://example.com/services/service-1
Je souhaite ajouter une règle de redirection 301 dans le fichier .htaccess
afin que, lorsque quelqu'un ouvre la page:
http://example.com/services
il devrait rediriger vers sa sous-page:
http://example.com/services/service-1
J'ai essayé de créer une règle dans le fichier .htaccess
mais celui-ci passe en boucle de redirection en tant que page secondaire. Voici mon code pour le fichier .htaccess
:
Redirect 301 /services /services/service-1
Mise à jour: Ci-dessous le code complet du fichier htaccess
RewriteRule ^for-patients$ /for-patients/children [R=302,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Redirect 301 /services /services/service-1
Cela entraîne une boucle de redirection, car la directive mod_alias Redirect
est préfixe matching . Ainsi, le chemin source /services
correspond au chemin redirigé /services/services-1
, etc. etc.
Cependant, comme vous utilisez déjà mod_rewrite (dans le cadre de WordPress), vous devez également effectuer cette redirection à l'aide de mod_rewrite (par opposition à mod_alias). Différents modules s'exécutent à différents moments de la requête (mod_rewrite avant mod_alias), malgré l'ordre apparent dans .htaccess
, ce qui peut entraîner des conflits inattendus.
Donc, essayez plutôt le suivant before votre contrôleur frontal WordPress existant (c'est-à-dire avant le commentaire # BEGIN WordPress
):
RewriteRule ^services$ /services/service-1 [R=302,L]
Cela correspond à l'URL /services
uniquement. Notez qu'il n'y a pas de préfixe de barre oblique dans RewriteRule
pattern lorsqu'il est utilisé dans .htaccess
.
Ceci est une redirection temporaire (302). Changez-le en 301 s'il est prévu qu'il soit permanent, mais uniquement après avoir confirmé que tout fonctionne correctement. (Par défaut, le navigateur met 301 en cache difficile, ce qui peut rendre les tests difficiles.)
UPDATE: Pour que ce qui précède fonctionne avec (ou sans) une barre oblique à la fin de l'URL demandée, remplacez la valeur ci-dessus par:
RewriteRule ^services/?$ /services/service-1 [R=302,L]
Et si votre URL cible doit également comporter une fin de barre oblique, ajoutez-la ensuite sur le substitution . c'est à dire. /services/service-1
, sinon WordPress émettra une autre redirection ou vous créerez éventuellement un problème de contenu en double.