Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP路由友好URL帮助_Php_Mod Rewrite_Url Rewriting_Url Routing - Fatal编程技术网

PHP路由友好URL帮助

PHP路由友好URL帮助,php,mod-rewrite,url-rewriting,url-routing,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'); i

我正在建立一个网站,运行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 rule
RewriteRule^.*$./index.php
将所有内容重定向到index.php

我对此有一些问题:因为所有内容都发送到index.php,包括.css、.js和图像文件。因此,除了php生成的html之外,任何东西都不能正常工作。我在这方面遇到了很大的麻烦,因为我尝试了所有的mod_重写(而不是PHP),但我无法让它工作。。。请参阅:


谢谢。

只需改进您的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>

+1,也添加非控制器驱动的目录,如“admin”或“downloads”。甚至是你的整个图像目录。你能给我管理目录和图像的规则吗???@Jonathan我已经添加了管理部分,但是图像不需要,因为它们永远不会被这些规则捕获,并且将从url中指定的原始路径中获取。最后一个问题,我正在使用.css和的相对路径。js文件,所以现在我需要将它们更改为完整路径,以使其工作,但meybe有一个mod_重写规则,所以没有mather ho manu斜杠URL的路径将是相同的。。。也许“重写基地”可以做到这一点?
<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>