Ответ 1
Попробуйте помещать\перед вашим пространством, чтобы избежать его.
RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
Мне нужно настроить RewriteRules для перенаправления URL-адреса, в котором есть пробел. Я пробовал это:
RewriteRule ^article/with%20spaces.html$ /article/without_spaces.html [R=301,L]
... но это не работает. Ввод в пространство вместо %20 вызывает 500 Internal Server Error. Как добавить пробел?
Попробуйте помещать\перед вашим пространством, чтобы избежать его.
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 spaces.html$" /article/without_spaces.html [R=301,L]
Кроме того, эти кавычки могут использоваться для помещения любого ожидаемого аргумента:
RewriteRule "^article/with spaces.html$" "/article/without_spaces.html" [R=301,L]
А, я нашел решение: используйте стиль regex для отображения пробела:
RewriteRule ^article/with\sspaces.html$ ...
Хотя, я подозреваю, что это будет соответствовать всем другим символам пробелов (вкладки и т.д.), но я не думаю, что это будет большой проблемой.