web-dev-qa-db-fra.com

301 comportement de redirection dans un système drupal

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?

3
Joe Corkery

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.

3
Joe Corkery

Oubliez .htaccess. Utilisez le redirection globale . Cela vous donne:

  1. Vérifie l'URL actuelle pour un alias et effectue une redirection 301 vers celui-ci s'il n'est pas utilisé.
  2. Vérifie l'URL actuelle pour une barre oblique de fin, la supprime si elle est présente et répète la vérification 1 avec la nouvelle demande.
  3. Vérifie l'accès à l'URL. Si l'utilisateur n'a pas accès au chemin, aucune redirection n'est effectuée. Cela permet d'éviter d'exposer les nœuds avec alias privé.

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 .

2
cgp

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
0
danlefree

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.

0
acrosman