Назад | Перейти на главную страницу

Отслеживание странной перезаписи Apache

The tl: dr; Как бы вы отслеживали переписывание URL-адреса, которого не должно происходить?


Подробности: у меня есть один файл .htaccess, и это просто:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]

Перезапись включена. Когда я посещаю URL-адрес, подобный следующему:

foo.com/index.php Я получаю то, что ожидаю. foo.com/index/ однако перенаправит на foo.com/index.htm

Итак, в моем маршруте приложения, например foo.com/index/books/fiction станет foo.com/index.htm/books/fiction

Где это можно было установить? Я думал, что это может быть в моем файле vhosts, но это выглядит так:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
etc...

что мне кажется довольно ванильным. Тогда я мог бы указать мой DirectoryIndex (расположенный в каталоге с поддержкой модов apache2), поэтому я изменил его на:

<IfModule mod_dir.c>

          DirectoryIndex index.php index.phtml index.html

</IfModule>

Но не повезло. Я не уверен, где еще искать. Какие-либо предложения?

Активируйте ведение журнала отладки в среде ведения журнала и вызовите этот URL-адрес. Apache должен создать подробный журнал там, где он был в дальнейшем. По крайней мере, это то, что nginx делает в режиме отладки.

Понятия не имею, почему это происходит, но вы можете попробовать:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]

Вместо вашего переписывания, которое проверяет наоборот. MultiViews также может быть проблемой.