PHP дружелюбная ошибка URL? - PullRequest
1 голос
/ 11 апреля 2020

Я только начал курс по реализации шаблона MVC с использованием PHP, и я думаю, что у меня возникла ошибка, связанная с дружественным механизмом URL. Сайт, который я создаю, имеет следующий синтаксис URL: http: // [site] / [controller] / [method] / [parameters] .

До сих пор это работало очень просто: я получаю доступ к контроллеру и на экране печатаю, к какому контроллеру осуществляется доступ (печатается методом из класса контроллера). Проблема в том, что когда я получаю доступ к URL http://cursophp/cliente (реальный контроллер), он работает, и когда я пытаюсь использовать несуществующий контроллер, WAMP показывает экран ошибок, который сообщает, что страница не может быть найдена; но , когда я пытаюсь получить доступ к http://cursophp/produto (также настоящий контроллер), появляется ошибка 404 из Apache! И я также попробовал с другими словами, такими как: produto1, produto2, product, product1 (префикс «prod») и та же ошибка 404 выставляется!

Использование Composer или непосредственное включение файла контроллера с требованием приводит к той же проблеме.

Это известная ошибка или я делаю ошибку?

htacess content:

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

Просто добавив больше деталей:

Когда я пытаюсь указать "pro" в качестве имени контроллера: enter image description here

Когда я пытаюсь использовать «prod» (или любое слово с префиксом «prod»): enter image description here

Когда я пытаюсь «aaaa» "(или любое слово любой длины, которое не соответствует имени контроллера): enter image description here

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

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

Вместо этого он должен ответить HTTP404, когда файл для загрузки не может быть найден.

Вообще говоря, вам нужно исправить это в файле Core.php.

0 голосов
/ 11 апреля 2020

Проблема, вероятно, в функции проверки маршрута. Попробуйте отладить, на какой строке он запускается, показать ошибку. Тем не менее, невозможно предложить вам конкретный c способ решения этой проблемы без предоставления более подробной информации

...