Вопрос

Мне нужно настроить некоторые RewriteRules для перенаправления URL-адреса, в котором есть пробел.Я уже пробовал это:

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

...но это не работает.Ввод пробела вместо %20 приводит к внутренней ошибке сервера 500.Как мне добавить пробел?

Это было полезно?

Решение

Попробуйте поставить \ перед своим пробелом, чтобы избежать этого.

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

Другие советы

Вы можете просто сбежать из этого пространства с помощью \

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

Если вы хотите избежать сложности экранирования каждого пробела (напримересли вы планируете автоматически сгенерировать этот файл), вы можете просто использовать кавычки:

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

Кроме того, эти кавычки могут быть использованы для заключения любого ожидаемого аргумента:

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

Первый параметр заменяет пробел, в то время как второй заменяет жестко закодированный %20 в URL.

Ах, я нашел решение:используйте стиль регулярного выражения для отображения пробела:

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

Хотя я подозреваю, что это также соответствовало бы всем остальным пробелам (табуляции и т.д.), Но я не думаю, что это будет большой проблемой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top