RewriteRule htaccess文章和分页查询字符串

时间:2014-03-29 22:41:24

标签: php .htaccess mod-rewrite url-rewriting

我正在尝试在htaccess中应用一些重写规则,我在stackoverflow上查看了几篇可用的文章,但我仍然无法解决所有问题。

丑陋的网址:www.example.com/index.php?p=page&article_id=14&currentpage=2

SEO网址:www.example.com/page/14/2

p是动态网页名称,article_id显然是文章ID,currentpage是分页查询字符串。

我目前的规则:

RewriteRule ^(.*)$ index.php\?p=$1 [QSA,L]

前面提到的规则在这种情况下非常有效:

丑陋的网址:www.example.com/index.php?p=page

SEO网址:www.example.com/page

但是,在某些情况下我有article_idcurrentpage时呢?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

类似于:

RewriteRule ^page/([^/]*)/([^/]*)$ index.php?p=page&article_id=$1&currentpage=$2 [QSA,L]
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]

路由那个具体案例?

或者在PHP中路由它,这是您目前必须适合的.htaccess的一个非常简单的路线:

$p = strtolower($_GET['p']);
$params = explode('/', $p);
if(!is_array($params)) {
    $func = $params;
} else {
    $func = array_shift($params);
}

if("page" == $func) {
    if(is_array($params)) {
        $article_id = $params[0];
        $currentpage = isset($params[1]) ? $params[1] : 0;
        //Do something with that info, use what's needed to errorcheck/etc
    } else {
        //default view
    }
}

尽管如此,如果所有这些都是动态的,那么在我看来,调查路由会让你更好。再一次,这个例子展示了如何在没有任何外部的,简单的东西的情况下做到这一点,那里有很多类也会做路由。