Question

Je dois configurer certaines règles RewriteRules pour rediriger une URL contenant un espace. J'ai essayé ceci:

RewriteRule ^article/with%20spaces.html$ /article/without_spaces.html [R=301,L]

... mais ça ne marche pas. Mettre dans un espace au lieu de% 20 provoque une erreur de 500 serveur interne. Comment ajouter un espace?

Était-ce utile?

La solution

Essayez de placer un \ devant votre espace pour y échapper.

RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]

Autres conseils

Vous pouvez simplement échapper à l'espace avec un \

RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]

Si vous souhaitez éviter la complexité liée à l'échappement de chaque espace (par exemple, si vous envisagez de générer ce fichier automatiquement), vous pouvez simplement utiliser des guillemets:

RewriteRule "^article/with spaces.html
RewriteRule "^article/with spaces.html<*>quot; "/article/without_spaces.html" [R=301,L]
quot; /article/without_spaces.html [R=301,L]

De plus, ces guillemets peuvent être utilisés pour inclure n'importe quel argument attendu:

<*>
RewriteRule ^article/with[\ |%2520]spaces.html$ /article/without_spaces.html [R=301,L]

La première option remplace un espace tandis que la seconde remplace% 20 dans l’url.

Ah, j'ai trouvé une solution: utilisez le style regex pour afficher un espace:

RewriteRule ^article/with\sspaces.html$ ...

Cependant, je suppose que cela correspondrait également à tous les autres caractères d'espacement (tabulations, etc.), mais je ne pense pas que cela va poser trop de problèmes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top