0

使用 .htaccess 将所有地址重写为 index.php

然后 Index.php 需要确定要包含的文件。目前它在“/”上爆炸并执行 foreach 以找出哪个文件。这会导致错误。

首先我们得到 URI。

如果有一个地址,例如。localhost/next-page然后我们想要包含一个具有该名称和扩展名 PHP 的文件,并为as和asinclude('content/'.$post.'.php');提供全局变量$table'PAGES'$post'next-page'

如果有两个,那么第一个应该被认为是 $table,第二个应该被认为是 $post,并且要包含的文件应该是include('content/single-'.$post.'.php');

我们如何做到这一点?

4

1 回答 1

0

首先,您需要隔离 URL 的相关部分(在这种情况下,这可能是路径,尽管没有您的重写规则,我们不知道)。然后:

$parts = explode('/', $path);
switch(count($parts)) {
    case 1:
        // set your globals (why are you using globals????)
        include('content/'.$parts[0].'.php');
        break;
    case 2:
        // do whatever you need with $parts[0] and $parts[1]
        break;
    // etc
}

如果某些案例之间存在显着相似性,您可以在做一些初步工作以使情况正常化后允许从一个案例到下一个案例,例如

    case 1:
        array_unshift($parts, 'PAGES'); // now $parts will have two elements
        // intentional fall-through
    case 2:
        // do whatever you need with $parts[0] and $parts[1]
        break;

最后:如果你需要对里面的项目做很多事情$parts,你可以给它们命名,使代码更易读,使用以下list结构:

    case 2:
        list($table, $post) = $parts;
        // carry on as before but now $table == $parts[0] and $post == $parts[1]
于 2012-06-20T22:13:17.710 回答