Есть ли какая-то конфигурация Apache, которая может отфильтровать двойную косую черту из URL? - PullRequest
0 голосов
/ 17 февраля 2011

У меня есть веб-программное обеспечение, где мне нужны URL-адреса, подобные этому

http://site.com/page/var1/val1/var2//var3/val3

Затем я перехватываю такие URL в .htaccess, перенаправляю в php-файл, который затем анализирует его в $ _GET и перенаправляет все в основное приложение. Эта двойная косая черта важна, это означает, что переменная var2 установлена ​​и содержит пустое значение, другими словами, $ var2! == NULL.

На некоторых серверах он работает как положено, но на некоторых серверах это не так, URL-адрес молча преобразуется в

http://site.com/page/var1/val1/var2/var3/val3

что, конечно, все ломает, потому что оно разбирает его на $ var1 = 'val1', $ var2 = 'var3', $ val3 = ''.

К сожалению, у меня уже нет доступа к одному из этих серверов, и я не помню на 100%, был ли это Apache или нет, но давайте предположим, что это был Apache, так как с этим сервером мы имеем дело большую часть времени.

Может быть, есть какой-то конфиг, управляющий этим? Включает / выключает очистку двойных слешей.

1 Ответ

1 голос
/ 23 февраля 2011

Apache удаляет такие пустые сегменты пути перед отображением его в файловую систему. Чтобы получить исходный запрошенный URI в mod_rewrite, проверьте строку запроса в %{THE_REQUEST}:

RewriteCond %{THE_REQUEST} ^GET\ (/[^?\ ]*)
RewriteRule …

Затем вы можете ссылаться на совпадение RewriteCond с %1.

...