友情URL的PHP​​路由帮助

Jon*_*han 5 php mod-rewrite url-rewriting url-routing

我正在构建一个通过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
}
Run Code Online (Sandbox Code Playgroud)

然后使用mod_rewrite规则,RewriteRule ^.*$ ./index.php我将所有内容重定向到index.php.

我有一些问题:因为一切都发送到index.php,包括.css,.js和图像文件.所以除了php生成的HTML之外没有什么工作正常.我遇到了很大的麻烦,因为我尝试了mod_rewrite的所有东西(而不是PHP)我无法让它工作......请参阅:Apaches mod_rewrite VS. PHP路由?

谢谢.

Mik*_*ite 5

只需改进你的mod重写:

<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>
Run Code Online (Sandbox Code Playgroud)

特别是添加线 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>
Run Code Online (Sandbox Code Playgroud)