J'ai téléchargé un site avec un script d'exploration (HTTrack) et j'ai maintenant quelques centaines de fichiers HTML à éditer et à redéployer.
Le site d'origine utilisait une combinaison de Drupal et d'un système de gestion de contenu moins connu et propriétaire. Toutes les URL étaient "propres" (pas d'extensions .html) et se terminaient par une barre oblique.
Cependant, la structure des URL des fichiers téléchargés n’est pas cohérente. Certaines URL qui se terminaient par une barre oblique, par exemple, example.com/training/
ont été téléchargées sous le nom example.com/training/index.html
. Ce n'est pas un problème en soi, car une fois redéployé, cette URL sera correctement résolue en /training/
, tant que je ne lie pas directement à index.html.
Cependant, une grande partie des URL a été téléchargée avec un schéma de dénomination différent. Par exemple, example.com/about-us/
a été téléchargé sous le nom example.com/about-us.html
. Je n'ai aucune idée de ce qui a causé ce manque de cohérence et je suis maintenant confronté à un dilemme sur la façon de redéployer le site. Il semble que mes options se limitent aux suivantes:
Les fichiers téléchargés au format page/index.html
peuvent être téléchargés tels quels. Si je modifie tous les liens internes avec "Rechercher et remplacer", ces pages fonctionneront comme auparavant, avec le slash de fin.
Inconvénient:
Les URL des fichiers téléchargés en tant que page.html
peuvent être "nettoyées" avec une règle .htaccess pour supprimer .html
.
Inconvénient:
example.com/technology
et example.com/technology/methods.html
, car cela casserait ApacheQuoi qu’il en soit, je pense qu’il serait prudent d’avoir le slash de fin dans chaque URL ou de ne pas l’avoir nulle part. Quel est le meilleur moyen de garder ces URL cohérentes et quels sont certains des moyens d'éviter les inconvénients de chacune des méthodes décrites ci-dessus?
Il suffit de garder comme ça, propre.
Il est assez facile de supprimer index.html d'une URL avec mod_rewrite. Disons que nous voulons rediriger www.example.com/index.html vers www.dense13.com:
RewriteEngine On
RewriteRule ^index\.html$ / [R=301,L]
Si vous n'êtes pas familiarisé avec la syntaxe .htaccess, la directive RewriteRule se compose de trois parties: un motif (^ index.html $), une substitution (/) et éventuellement des modificateurs ([R = 301, L]). Dans le motif: le symbole ^ signifie "commencer par" et le symbole $ signifie "se termine par". De plus, la barre oblique inverse est le caractère d'échappement, et nous devons le mettre devant le point, car le point a normalement une signification spéciale et nous ne le voulons pas ici. Donc, dans ce cas, le modèle correspond uniquement à la chaîne "index.html".
Si le modèle est trouvé (c'est-à-dire si la demande est à index.html), il sera redirigé vers "/", qui est la racine de votre site Web.
Et si vous voulez toujours supprimer index.html? Par exemple, www.example.com/music/index.html -> www.dense13.com/music/. Facile!
RewriteEngine On
RewriteRule ^index\.html$ / [R=301,L]
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]
La deuxième règle de réécriture recherche toute demande se terminant par /index.html et supprime le bit index.html. Encore une fois, brève explication de la deuxième règle de réécriture.