Mappage d'un ID précédemment utilisé à un nid
Si vous êtes assez chanceux pour être en mesure de mapper un numéro d'identification précédemment utilisé à un nid Drupal, alors vous pouvez très facilement utiliser mod_rewrite pour remapper l'URL. Disons que l'ancienne URL ressemblait à http://example.com/index.asp? ID = 123 , mais votre nouveau site Drupal utilise une URL comme http://example.com/node/123 . Les règles suivantes peuvent être utilisées pour remapper l'ancienne URL à l'insu de l'utilisateur. Les exemples suivants seraient placés avantles règles de réécriture Drupal dans votre fichier .htaccess:
# Correspond à une demande d'index. asp RewriteCond% {REQUEST_URI} ^/index.asp $ # correspondent à une chaîne de requête comme ID = [un certain nombre] et capturent ce nombre RewriteCond% {QUERY_STRING} ^ ID = ([0-9] *) $ # réécrire une URL conviviale Drupal en utilisant le nombre capturé # note qui <x1> est un renvoi à partir d'un RewriteCond # où $1 est une référence à partir d'un RewriteRule RewriteRule ^. * $ index. php? q = noeud/<x2> [L]
Pour un match gourmand, vous pouvez laisser tomber le premier RewriteCond et il serait capturer toute URL qui se termine par "? ID = [un certain nombre]". La chose commode ici est qu'Apache n'a pas besoin de savoir quoi faire avec une extension de fichier ASP parce que ces URL sont réécrites en tant que demandes à index. php.
Je dois noter qu'il est en dehors de la portée de ce post pour expliquer comment créer de nouveaux nœuds avec un nid qui correspond à l'ID d'un élément importé de votre ancien site. Je vais garder ça pour un autre jour.
Mappage d'un nom de fichier numérique précédemment utilisé à un nid
Peut-être que votre ancien CMS crée des fichiers HTML statiques, mais utilise un ID prévisible dans le nom de fichier. L'exemple suivant permet de capturer des caractères numériques entre parenthèses et de les ajouter à index. php? q = node/. p. ex. demander file5. html retournerait le même contenu que node/5 .
# Mapper un nom de fichier avec un nombre prévisible à un nid Drupal RewriteRule ^ file ([0-9] *) \.html $ index. php? q = node/$ 1 [L]
Le site Web bytes ajouté a un vraiment commode mod_rewrite cheat sheet si vous voulez en savoir plus.
Création d'alias d'URL individuels dans Drupal
Dans certains cas, vous pourriez pas voulez utiliser mod_rewrite pour traiter ces URL. Il peut être trop de surcharge pour votre serveur, ou vous ne pouvez pas avoir un ID prévisible comme une référence.
En utilisant le module Path, qui vient avec Drupal Core, vous pouvez ajouter des alias pour les chemins d'accès système. Saisissez manuellement les alias en naviguant vers admin-> site Building-> alias URL-> Add. L'exemple suivant serait mapper votre ancienne URL 2008/12/12/My-SEO-page. html à l'URL Drupal node/5
Vous pouvez également ajouter ces alias lorsque vous modifiez chaque nœud sous la rubrique URL path Settings .
Une solution programmatique
L'exemple ci-dessus de l'utilisation du module Path est grande lorsque vous avez seulement une poignée de pages à alias. Mais considérez une migration qui a 250 000 pages à remapper. Si vous utilisez un script de migration, vous pouvez créer ces alias à la volée pendant le processus d'importation à l'aide de la fonction path_set_alias () de Drupal.
title = $Old _title; Etc. Ensuite, vous souhaitez créer une certaine logique pour reconstruire votre ancienne URL//example.com/2008/10/18/My-Old-URL.html--use: $Old _url = "2008/10/18/My-Old-URL.html"; Enregistrez le nœud dans la base de données node_save ($Node); Enregistrez le nouvel alias en fonction de votre ancienne URL si ($node-> nid) {path_set_alias ('node/'. $node-> nid, $Old _url, NULL,'fr'); } ?>
Redirection en tant que solution
Si vous voulez envoyer vos visiteurs à la bonne page et Utilisez vos nouvelles URLs de style Drupal, vous pouvez utiliser une redirection permanente. Le code d'état 301 HTTPindique à vos visiteurs que l'ancienne URL a une nouvelle maison permanente. Les moteurs de recherche devraient également respecter un 301 et l'index de manière appropriée. En utilisant le RewriteRules ci-dessus, vous pouvez accomplir ceci en utilisant les drapeaux [R = 301, L] , démontré ci-dessous:
# Correspond à une requête pour index. asp RewriteCond% {REQUEST_URI} ^/index.asp $ # correspondent à une chaîne de requête comme ID = [un certain nombre] et capturez ce nombre RewriteCond% {QUERY_STRING} ^ ID = ([0-9] *) $ # Redirect de façon permanente-note le? à la fin de l'adresse # qui est nécessaire de ne pas ajouter la requête d'origine chaîne RewriteRule ^. * $ http://example.com/node/<x1>? [R = 301, L]
L'exemple ci-dessus va rediriger l'utilisateur vers une URL comme /node/123 . Alors, que faire si vous voulez rediriger en permanence vers un alias URL plus amical? Une excellente option est d'utiliser le module Global Redirectpour Drupal.
La solution de module de redirection globale
Lorsque le module Path crée un alias, il ne supprime pas l'accès au chemin d'origine. Donc, /node/123 et /Your-Aliased-URL seront tous deux montrent le même contenu. Cela peut être un inconvénient pour votre moteur de recherche classement parce qu'ils froncent les sourcils sur le contenu en double. Le module global Redirect résout ce problème en créant une redirection 301 de /node/123 to /Your-Aliased-URL . Il n'y a pas de configuration nécessaire, il fonctionne automatiquement pour tous vos alias d'URL.
Ce module peut également être utilisé en conjonction avec les règles mod_rewrite. (la première série de règles mod_rewrite mentionnées dans ce post sont un bon exemple) Supposons que vous avez un alias URL comme /Your-Aliased-URL utilisé pour /node/123 . En utilisant mod_rewrite, vous pouvez mapper /index.asp? ID = 123 à /node/123 et global Redirect sera de façon permanente rediriger vers votre alias. Cela envoie effectivement toutes les demandes de /index.asp? ID = 123 à /Your-Aliased-URL .
Comme vous pouvez le voir, il existe de nombreuses options pour capturer vos anciennes URL. Quelle que soit la solution que vous choisissez, assurez-vous que les gens qui viennent sur votre site voient ce qu'ils attendent.
Avec un peu de planification, une migration ne découragera pas vos visiteurs et vous ne ferez pas de mal à votre relation précieuse avec les moteurs de recherche.