0

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

1:仅使用 .htaccess:

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

或 2:将 .htaccess 与 index.php“路由”系统结合使用:

    <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 。

我的问题是,哪种方法更好,或者还有其他我不知道的方法?我所说的更好是指效率、速度和逻辑。

4

1 回答 1

1

在现实生活中,大多数路由系统都非常复杂,以至于第一个选项.htaccess直接变成了噩梦。

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

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

于 2013-01-15T12:22:46.303 回答