вопрос переписывания модов: / test / method переписывается в test.svg / method - PullRequest
0 голосов
/ 02 марта 2010

Я заметил странную (для меня) вещь mod_rewrite.Исправить это не так важно для меня, как выяснить, что происходит.По сути, у меня в корне документа есть файл svg test.svg, а также index.php.Исходя из моего .htaccess файла, я ожидаю, что при посещении http://localhost/test.svg я получу файл .svg (и он получит), а при посещении http://localhost/test/action будет перезаписано index.php/test/action.Вместо этого последний явно переписывается в test.svg/action, когда я получаю сообщение

Запрошенный URL /test.svg/action не найден на этом сервере.

Вот мой .htaccess файл:

# Turn on URL rewriting
RewriteEngine On

# Protect application and system files from being viewed
# RewriteRule ^(application|modules|system) - [F,L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT,L]

Я использую Apache 2.2.12 в Ubuntu (устанавливается через apt-get).Я думаю, что мои настройки довольно стандартны, но я не уверен, какие именно директивы или файлы конфигурации будут актуальны.Я ни в коем случае не системный администратор, я просто использую этот сервер для локального тестирования и разработки.

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

1 Ответ

2 голосов
/ 02 марта 2010

Функция согласования содержимого HTTP в Apache автоматически переводит из "/ test" в "/test.svg". Смотри http://httpd.apache.org/docs/2.0/content-negotiation.html#multiviews

Вы можете отключить согласование содержимого в .htaccess с помощью директивы:

Options -MultiViews

Вы можете получить больше информации о том, что делает mod_rewrite, добавив эти директивы в вашу конфигурацию Apache (они не будут работать в .htaccess):

RewriteLog /path/to/rewrite.log
RewriteLogLevel 3

RewriteLogLevel может быть любым числом от 0 (отключено) до 9 (очень многословно). 3 должно дать вам достаточно, чтобы увидеть, что происходит, но не используйте это на рабочем сервере.

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