Подтвердить что ты не робот

Laravel "слушает" строку index.php в любом месте URL-адреса

У меня есть проект Laravel 5 с настройками маршрутов, а также пользовательская страница 404 (в основном для отсутствующих/неправильных "страниц" ).

Итак, в основном, если я открываю любой существующий маршрут, я получаю правильный вывод, а каждый другой URL-адрес показывает 404:

  • project.com/login - Хорошо, страница входа в систему

  • project.com/ghdkfgl - 404

Это выглядит ясным и, похоже, работает как ожидалось. Итак, все, что я добавляю после косой черты, открывает либо фактическую существующую страницу, либо страницу 404.

Если я не поставил "index.php" в любом месте URL-адреса. В этом случае Laravel выполняет запрос по какой-то причине следующим образом:

  • project.com/jhdfkds/index.php/login - Открывает страницу входа (CSS и другие ресурсы ушли из-за путей, но понятных).

  • project.com/kfhjdsg/index.php/fkdhsg - Открывает 404 (но CSS и другие ресурсы тоже не загружаются).

Я уверен, что оба из них должны открыть 404, поскольку в моем проекте нет таких маршрутов.

Я также проверил такое же поведение на веб-сайте документации Laravel (я предполагаю, что он построен на Laravel).

Что может быть причиной этого? Как это можно решить?

Почему Laravel даже считает "index.php" посередине URL?

Это имеет какое-либо отношение к файлу .htaccess? (Я его не редактировал)

4b9b3361

Ответ 1

Проблема заключается в классе Symfony Request и как он определяет базовый URL. В принципе, предполагается, что если у вас есть запрос типа aaa/index.php, что текущий текущий script (с именем index.php) находится внутри каталога aaa, он принимает aaa/index.php как базовый URL.
Позже он будет удален из фактического URI запроса.

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

Ответ 2

Тот же вопрос, с которым я столкнулся в laravel 3, когда я пропускал публикацию из url. то я поместил еще один файл htaccess в общую папку.

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]