用PHP重写网址?

时间:2010-12-07 17:53:58

标签: php url seo url-rewriting

好吧,我想说我需要使用seo网址。我怎么能管理以下模式:

www.mysite.com/{context}/{mode}/

允许将变量声明为如下:

www.mysite.com/{context}/{mode}/{var}/{val}/{var2}/{val2}...

例如:

www.mysite.com/user/view/id/123

解决方案?,怎么做?

可能的解决方案可能如下: 所有网址都会重定向到www.mysite.com/index.php。 在index.php文件中,我将网址除以$u = explode($ulr, '/');:忽略$u[0]并将$u[1]视为上下文,$u[2]作为模式,最终$u[3], $u[4]...为var-values的一对像get system index.php?var=val。 通过了解上下文和模式,包含正确的文件,每个人都很高兴。

  • 我怎么能得到网址(es:www.mysite.com/user/view/id/123)或只是最后一部分(es:user / view / id / 123)?
  • 这个系统有没有任何缺点?

2 个答案:

答案 0 :(得分:2)

在这里看看我接受的答案:

Simulate file structure with PHP

答案 1 :(得分:0)

我使用的解决方案是:

的.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    #Rewrite the URI if there is no file or folder
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

url_manager(仅适用于根文件:www.mysite.com/index.php;要在文件夹中使用它(www.mysite.php / folder / index.php),为每个数字键和$ i添加+1 )

function urlFile()
{
    $url = explode('/', $_SERVER["REQUEST_URI"]);
    $context = $url[1];
    $mode = $url[2];
    return "{$context}_{$mode}.php";
}

function get($string)
{
    $url = explode('/', $_SERVER["REQUEST_URI"]);
    unset($url[0], $url[1], $url[2]);

    $i = 3;
    foreach ($url as $u)
    {
        $get[$url[$i]] = $url[$i + 1];
    }

    return $get[$string];
}