web-dev-qa-db-fra.com

Htaccess redirige de '/%postname%.html' vers '/% postname%'

J'ai un site de critiques de voyages basé sur Drupal 5.x vers lequel je passe sous Wordpress 3.x (même nom de domaine).

Le site Drupal est structuré comme suit:

  • www.example.com/travel-guides (ce sont des pages de haut niveau) - ce ne sont que quelques-unes.
  • www.example.com/<filename>.html (nom de fichier est le nom d'un lieu/attraction, etc.). - constitue l'essentiel du contenu du site.

Dans WordPress, la configuration est assez simple. Tout le contenu suit un simple permalien:

www.example.com/postname

Comment définir une règle dans .htaccess pour rediriger en masse toutes les pages? Il y a plus de 600 pages et je ne veux pas définir manuellement les règles de redirection pour toutes.

3
user10718

Au-dessus des règles de réécriture de WordPress, ajoutez:

RedirectMatch permanent ^/([^/]+)\.html$ /$1

Cela attrapera example.com/foo.html mais pas example.com/travel-guides/foo.html. Pour intercepter toutes les URL se terminant par .html, supprimez le premier ^ du modèle.

Pour rediriger toutes les URL se terminant par .html sauf celles dans travel-guides, vous avez besoin de mod_rewrite:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} !^/travel-guides/
RewriteRule ([^/]+)\.html$  /$1 [L,R=301]
3
fuxia