Je migre un site plus ancien vers un site plus récent utilisant Drupal. Dans le cadre de cette opération, j'essaie de configurer 301 redirections vers les nouvelles pages, mais j'obtiens un comportement inattendu. J'ai ajouté la ligne suivante à mon fichier .htaccess:
redirect 301 /redirect.html http://www.example.com/newpage
Malheureusement, ce qui se passe, c'est que je suis amené à:
http://www.example.com/newpage?q=redirect.html
Ce qui bien sûr ne se charge pas correctement. Des pensées?
Donc, après un peu de recherche, j'ai trouvé la réponse ici . C'est semblable à danlefree mais légèrement différent.
<IFModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# custom redirects
RewriteRule ^redirect\.html$ http://www.mysite.com/newpage [R=301,L]
# end custom redirects
...
</IFModule>
Cela semble faire le travail.
Oubliez .htaccess.
Utilisez le redirection globale . Cela vous donne:
Cela simplifie légèrement la migration de votre site Web, et probablement le plus important, il est simple de rechercher exactement ce qui est redirigé où. (car il y a une interface utilisateur pour cela)
Bonus ( imaginez une chute apparaissant ici )
Vous semblez créer quelque chose de similaire à RL propres . Je pense que vous pourriez être intéressé par pathauto .
Vos autres règles de réécriture interfèrent.
Essayez plutôt ce qui suit:
RewriteEngine on
RewriteRule ^/redirect\.html$ http://www.mysite.com/newpage [L,R=301]
# ... existing rewrites
Nous avions l'habitude de module de redirection de chemin pour cela. Il ne peut pas gérer toutes les choses puissantes que Mod_rewrite peut faire, mais c'est un travail vraiment agréable pour nous de préserver les anciennes URL.