REQUEST_URI vs HTACCESS

时间:2013-01-15 12:16:39

标签: php routing

据我所知,“路由”和使用“友好网址”有两种不同的方式

1:仅使用.htaccess:

RewriteRule ^foobar/([^/]+)/([^/]+)$ "index.php?foo=$1&bar=$2" [NC]

或 2:将.htaccess与index.php'routing'系统结合使用:

    <IfModule mod_rewrite.c>
          RewriteEngine On
          RewriteBase /
          # if file not exists
          RewriteCond %{REQUEST_FILENAME} !-f
          # if dir not exists
          RewriteCond %{REQUEST_FILENAME} !-d
          # avoid 404s of missing assets in our script
          RewriteCond %{REQUEST_URI} !^.*\.(jpe?g|png|gif|css|js)$ [NC]
          RewriteRule .* index.php [QSA,L]
    </IfModule>

然后在index.php里面:

$uri = explode("/",substr($_SERVER['REQUEST_URI'],1));
    if((isset($uri[0])) && ($uri[0]!="")) {
        $page = $uri[0];
        if(is_file(ROOT."/subs/docs/$page/config.php")) {
               include(ROOT."/subs/docs/$page/config.php");
            }
    } else {
        $page="home";
    }

然后在某处包含$ page。

我的问题是,哪种方式更好,还是有其他一些我不知道的方法?我的意思是效率,速度和逻辑。

1 个答案:

答案 0 :(得分:1)

在现实生活中,大多数路由系统都是如此复杂,以至于第一个选项将.htaccess转变为生活的噩梦。

事实上,所有可能的输入参数组合的数量如此巨大,以至于主应用路由器必须只处理检测控制器。虽然每个特定的控制器都必须以自己的方式处理它们 坦率地说,您无法确定必须将第二个参数分配给foo变量并将第三个参数分配给条形码。

所以,除了第二个之外别无选择。