.htaccess игнорируется, когда URL содержит закодированный слеш - PullRequest
0 голосов
/ 12 марта 2012

Я столкнулся с действительно странным поведением в Apache.У меня есть стандартное «разрешить PHP обрабатывать все, что не является файлом или каталогом» переписать настройки.

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

Это работает, как ожидалось за исключением , когда URLсодержит %2F, который является закодированной косой чертой (/).Всякий раз, когда это происходит, Apache отвечает 404, что логично, поскольку ни один из этих путей не существует.Но я не могу понять, почему мои правила перезаписи в моем .htaccess игнорируются.

TL; DR

GET /Foo/bar/baz обслуживается моим PHP-скриптом

GET /Foo/bar%2Fbaz обслуживается Apache.

1 Ответ

1 голос
/ 12 марта 2012

Узнал ответ сам. Директива config AllowEncodedSlashes должна быть установлена ​​на on, чтобы это работало. В противном случае Apache ответит 404, если URL-адрес содержит закодированный прямой или обратный слеш.

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

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