Basi c URL Routing in PHP Не работает с использованием .htaccess - PullRequest
2 голосов
/ 14 января 2020

Я строю основную c маршрутизацию URL в Php, я прочитал много статей об этом, но когда я пытаюсь сделать то же самое, что не происходит при записи. Вот мой код

.htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php [QSA,L]

Указатель. php страница

<?php

$request = $_SERVER['REQUEST_URI'];
echo $request;
switch ($request) {
    case '/' :
        require __DIR__ . '/views/home.php';
        break;
    case '' :
        require __DIR__ . '/views/home.php';
        break;
    case '/about' :
        require __DIR__ . '/views/about.php';
        break;
    default:
        http_response_code(404);
        require __DIR__ . '/views/404.php';
        break;
}

и структура каталогов Структура каталогов

Теперь, когда я пытаюсь открыть / о или / контакт, он перенаправит меня на localhost / dashboard

Может кто-нибудь помочь мне это исправить?

Ответы [ 3 ]

0 голосов
/ 14 января 2020

Измените правило .htaccess на

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]

0 голосов
/ 14 января 2020

Попробуйте это (также полезно, если вы хотите использовать images / js / css / .. позже)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.(gif|jpg|png|jpeg|css|js|swf)$ /$1.$2 [END,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?$1 [L,QSA]

Подсказка: вы можете комбинировать дела '/' и '

<?php

$request = $_SERVER['REQUEST_URI'];
echo $request;
switch ($request) {
    case '/' :
    case '' : // you can combine the cases '/' and ''
        require __DIR__ . '/views/home.php';
        break;
    case '/about' :
        require __DIR__ . '/views/about.php';
        break;
    default:
        http_response_code(404);
        require __DIR__ . '/views/404.php';
        break;
}
0 голосов
/ 14 января 2020

Откройте файл httpd-vhosts.conf, расположенный здесь: C:\XAMPP\apache\conf\extra\httpd-vhosts.conf

Добавьте следующую строку под разметкой каталога:

AllowOverride All

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...