Почему код PHP выполняется в обоих файлах за один запрос? - PullRequest
2 голосов
/ 08 апреля 2020

Я потратил целый день на отладку одной проблемы, которая сводилась к такому поведению. Это не имеет смысла для меня.

У меня есть 2 файла index. php и session_plus. php.

Оба просто увеличивают переменную сеанса на один для каждого запроса.

Когда я добавляю файл .htaccess с перезаписью ...

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

и нажимаю session_plus. php, переменная сеанса увеличивается в два раза. Один раз по индексу. php, а другой раз по session_plus. php. Когда я удаляю файл .htaccess, запрос увеличивается один раз, как и ожидалось.

Я думал, что правило RewriteCond %{REQUEST_FILENAME} !-f сделает индекс обхода запроса. php полностью.

Может кто-нибудь объяснить, что здесь происходит?

Вот пример: http://0image.net/

Вот мой код: https://github.com/websitedesignby/0image.net

1 Ответ

1 голос
/ 08 апреля 2020

Это, вероятно, на самом деле не просто один запрос, как вы думали.

Скорее всего, это что-то вроде браузера, автоматически отправляющего запрос на /favicon.ico (как они часто делают по умолчанию) - и если у вас нет такого файла значков, загруженного для начала, то этот запрос, конечно, будет перенаправлен на ваш index.php в этой ситуации здесь из-за переписанного вами настроенного переписывания.

Разработчик браузера сетевая панель инструментов всегда полезна для проверки того, какие запросы на самом деле происходят.

...