URL-маршрутизация в PHP: URL-адрес направляет только на страницу 404-Not-Found - PullRequest
0 голосов
/ 02 августа 2020

У меня есть проект php в папке htdocs с именем «das-xampp». Индексный файл в каталоге root работает как маршрутизатор. У меня есть еще один index. php внутри просмотров. структура выглядит так:

das-xamp
|__index.php
|__views
   |__index.php
   |__about-us.php
   |__404-Not_Found.php

Таким образом, всякий раз, когда кто-то набирает localhost / das-xampp, он должен перенаправить пользователя на индекс внутри 'views / index. php' My root индекс (тот, который работает как маршрутизатор) выглядит следующим образом:

<?php

$path = trim($_SERVER['REQUEST_URI'], '/');
parse_url($path, PHP_URL_PATH);
$routes = [

''=> 'views/index.php',
'about-us' => 'views/about-us.php'


];
if (array_key_exists($path,$routes)) {
     require $routes[$path];
}else {
    require 'views/404-Not-Found.php';
}


?>

Дело в том, что всякий раз, когда я набираю localhost / das-xampp (после включения apache и mysql) появляется ненайденный php. Даже когда я набираю «localhost / das-xampp / about-us» вручную, отображается объект, не найденный.

Этого не произойдет, если я использую

"php -S localhost:<some_digit>" 

Все мои представления работают нормально .

страница не найдена

1 Ответ

0 голосов
/ 05 августа 2020

Проблема была с файлом .htaccess. Я не включил файл .htaccess, который будет перенаправлять в соответствии с маршрутами, которые у меня были в файле index. php (тот, что в каталоге root). Я размещаю код .htaccess ниже

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /das/index.php [L]
...