Назад | Перейти на главную страницу

Как сделать . соответствовать всем в конфигурации apache?

Внутри httpd.conf:

 rewriterule  ^questions/([0-9]+).*  ...

Это соответствует /questions/1674/<textarea>,но нет /questions/1674/<textarea><%2Ftextarea>

Если у вас есть закодированная косая черта в URI, Apache вернет immediete 404. В журнале ошибок будет указано:

[info] [клиент 1.2.3.4] обнаружил% 2f (закодированный '/') в URI (decoded = '/ question / 1 /'), вернул 404

Чтобы обойти это, добавьте в корневой каталог httpd.conf или <VirtualHost> раздел следующую директиву:

AllowEncodedSlashes On

И тогда ваша перезапись будет работать. Информация из руководства Apache:

Директива AllowEncodedSlashes позволяет использовать URL-адреса, которые содержат закодированные разделители путей (% 2F для / и дополнительно% 5C для \ в соответствующих системах). Обычно такие URL-адреса отклоняются с ошибкой 404 (не найдено).

Для получения дополнительной информации см .:

http://httpd.apache.org/docs/2.0/mod/core.html#allowencodedslashes

http://blog.dynom.nl/archives/Apaches-fail-with-encoded-slashes_20090625_40.html

Может быть, вам нужен флаг No Escape [NE] на правиле? Искать noescape в эта страница.