Apache и обратная косая черта в mod_rewrite - PullRequest
1 голос
/ 17 января 2011

Я хочу обрабатывать все входящие запросы одним скриптом (index.php в веб-корне).

Итак, в настоящее время происходит следующее: http://localhost/foo/bar/baz

маршрутизируется Apache (через .htaccess) в: http://localhost/index.php?url=foo/bar/baz


Это работаетну, однако, в Firefox я могу сделать это: http://localhost/foo\ -> заметить обратную косую черту .

и Apache вместо того, чтобы делать: /index.php?url=foo\

Издает общую страницу с сообщением об ошибке:

Объект не найден! Запрошенный URL-адрес не найден на этом сервере.Если вы ввели URL-адрес вручную, проверьте правильность написания и повторите попытку.

Если вы считаете, что это ошибка сервера, обратитесь к веб-мастеру.

Ошибка 404 localhost Apache/2.2.14 (Win32) DAV / 2 mod_ssl / 2.2.14 OpenSSL / 0.9.8l mod_autoindex_color PHP / 5.3.1 mod_apreq2-20090110 / 2.7.1 mod_perl / 2.0.4 Perl / v5.10.1

Прямое обращение к: http://localhost/index.php?url=foo\ работает без проблем, однако.


Все сайты, которые я видел в Интернете, кажутся способными изящно обрабатывать обратную косую черту (например, http://stackoverflow.com/tags/php\\\\\).

Я считаю это поведение ошибкой и хочу заставить Apache правильно перенаправлять обратную косую черту.Вот мой .htaccess файл в полном объеме:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L]

Как я могу заставить эту работу работать правильно?


Редактировать: Я только что попробовал это на своем веб-хосте, и это обрабатывается правильноими.Заставляет меня думать, что это какая-то настройка в httpd.conf.

Ответы [ 2 ]

0 голосов
/ 10 июля 2012

У меня просто была эта проблема на WampServer на Windows. На этой странице было решение - опция AllowEncodedSlashes, о которой Роберт Питт упоминает выше, является правильной, но она должна находиться в файле http.conf внутри блока VirtualHost, например:

<VirtualHost *:80>
    AllowEncodedSlashes On
</VirtualHost>

Не работает в .htaccess файле.

0 голосов
/ 19 января 2011

Вероятно, необходимо отключить AcceptPathInfo, чтобы не допустить, чтобы эти значения допускались как косые черты.

...