Question

Il y a plusieurs liens pointant vers un site où je gère le webmaster par erreur inclus un espace entre le nom de domaine et le nom de la page:

    www.domain.com/ page.html

Lorsque l'utilisateur clique, cela donne

    www.domain.com/%20page.html

Je voudrais utiliser mod_rewrite pour rediriger visites à l'adresse incorrecte à l'adresse correcte, mais ma règle de réécriture ne fonctionne pas . Je l'ai essayé ce qui suit sans succès:

    rewriterule ^\%20page.html$ /page.html [R=301,L]
    rewriterule ^.20page.html$ /page.html [R=301,L]

Comment puis-je écrire une règle pour attraper cette adresse? Je voudrais garder le PageRank et ne pas être pénalisé pour un lien brisé, et je ne peux pas obtenir le webmaster pour fixer ses liens .

Était-ce utile?

La solution

Mettre l'espace dans votre RewriteRule. Probablement par le mod_rewrite temps voit, il a été décodé.

Autres conseils

Utilisez un espace littéral, protégée par un antislash il ne se termine pas l'expression régulière:

RewriteRule ^\ page.html$ /page.html [R=301,L]

Vous pouvez utiliser quelque chose comme ça pour supprimer tous les caractères de contrôle:

RewriteRule ^([^\x00-\x19\x7F]*)[\x00-\x19\x7F]+(.*) /$1$2 [L,R=301]

Et pour votre caractère d'espace supplémentaire:

RewriteRule ^([^\x00-\x20\x7F]*)[\x00-\x20\x7F]+(.*) /$1$2 [L,R=301]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top