PHP, направляющий для дружественной справки URL

Я создаю веб-сайт, который выполняет всю канавку кода index.php.

Например, index.php?controller=something&id=01234.

Я хочу использовать PHP для создания дружественных URL, таким образом, я делаю это:

$request = str_replace('/root/', '', $_SERVER['REQUEST_URI']);
$params = explode('/', $request);

$controllers = array('first_c', 'second_c', 'third_c');

if (in_array($params[0], $controllers)) {
   include($params[0]); // just to give an example
}

Затем с правилом mod_rewrite RewriteRule ^.*$ ./index.php Я перенаправляю все к index.php.

У меня есть некоторые проблемы с этим: Поскольку все, отправляют к index.php, включал .css, .js и отображает файлы. Таким образом около HTML, сгенерированного php, ничто не работает правильно. Я испытываю большие затруднения из-за этого, потому что я попробовал mod_rewrite за все (вместо PHP), и я не могу заставить его работать..., см.: апачи mod_rewrite VS. Маршрутизация PHP?

Спасибо.

5
задан Community 23 May 2017 в 12:23
поделиться

1 ответ

Просто улучшите перезапись мода:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>

Особенно добавьте строку RewriteCond% {REQUEST_FILENAME}! -F

И если вам нужно больше разделов:

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

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>
5
ответ дан 14 December 2019 в 18:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: