Я столкнулся с действительно странным поведением в 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.