mod_rewrite с пробелами в URL - PullRequest
       24

mod_rewrite с пробелами в URL

35 голосов
/ 04 января 2009

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

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

... но это не работает. Помещение пробела вместо% 20 вызывает 500 внутренних ошибок сервера. Как мне добавить пробел?

Ответы [ 5 ]

56 голосов
/ 04 января 2009

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

RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
12 голосов
/ 04 января 2009

Вы можете просто покинуть пространство с помощью \

RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
9 голосов
/ 14 января 2013

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

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

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

RewriteRule "^article/with spaces.html$" "/article/without_spaces.html" [R=301,L]
8 голосов
/ 29 апреля 2012
RewriteRule ^article/with[\ |%2520]spaces.html$ /article/without_spaces.html [R=301,L]

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

1 голос
/ 04 января 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...