J'ai archivé un site web obsolète grâce à wget et httrack. Je souhaite continuer à offrir à la consultation la version statique archivée. Les URL sont les mêmes, au détail près que les pages ont à présent une extension .html
Je bloque sur l'expression à ajouter au .htaccess pour rediriger les URL sans extension vers les pages actuelles. Concrètement :
http://mondomaine.tld/Mapage serait redirigé vers http://mondomaine.tld/Mapage.html
Mais si on tape directement http://mondomaine.tld/Mapage.html, l'adresse ne serait pas redirigée
Ma commande qui ne fonctionne pas :
RedirectMatch 301 /([^\.(html)+])$ /$1.html
Comme difficulté supplémentaire, les URL d'origine contenaient des majuscules, des caractères accentués et de la ponctuation (tirets, points d'exclamation, etc)
Qu'est-ce qui ne va pas dans ma regex ?
# plop
Posté par Giantgoab . Évalué à 1.
[^] # Re: plop
Posté par Nerdiland de Fesseps . Évalué à 1.
RedirectMatch 301 /([^\.html+])$ /$1.html
RedirectMatch 301 /[^\.(html)+]$ /$1.html
RedirectMatch 301 /([^\.html])$ /$1.html
...ou autres combinaisons avec/sans parenthèses/crochets/+ ne fonctionnent pas.
# Mauvaise regex
Posté par peck (site web personnel) . Évalué à 3.
- rediriger toutes les url qui ne se terminent pas par . ou ( ou h ou t ou m ou l ou ) vers $1.html
Ton problème est de faire une regex négative alors qu'apache ne te le permet pas d'office. Il va falloir ruser avec les options avancées de pcre, par exemple avec un negative look-(behind|ahead)
Tester quelque chose comme
(.*)(?!\.html)$
Ou ceci qui marche mais qui ne sort pas de $1
(?<!\.html)$
[^] # Re: Mauvaise regex
Posté par Nerdiland de Fesseps . Évalué à 1.
Par contre, pour les deux regex, soit j'obtiens une boucle infinie (le .html est ajouté un nombre infini de fois au nom de fichier), soit une variable vide (je suis redirigé vers mondomaine.tld/.html), soit une erreur 500... Je suis perplexe.
[^] # Re: Mauvaise regex
Posté par peck (site web personnel) . Évalué à 2.
La variable vide c'est normal je l'ai indiqué $1 n'est pas rempli
préfixer la 2e regex par un (.*) peut t'aider, mais je ne
garantis pas :)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.