URL路由在非条件下

时间:2012-12-08 06:32:51

标签: php routes pyrocms

当url不包含某些单词时,我想调用一个特定的模块。例如:如果url是www.abc.com/articles/a,我想正常路由它。如果url为www.abc.com,则应调用默认模块。但如果url为www.abc.com/qw/asw,则应调用blog模块(Controller)。

2 个答案:

答案 0 :(得分:0)

你可以这样切出并检查网址:

$subdir  = substr(realpath(dirname(__FILE__)), strlen(realpath($_SERVER['DOCUMENT_ROOT'])));
$tmp_array = explode('?', trim($_SERVER['REQUEST_URI']));
$uri = str_replace($subdir, '', $tmp_array[0]);
$uri = ltrim($uri, '/');
$URIParts = explode("/", $uri);


$URIPartsCount = count($URIParts);

if( $URIPartsCount>0 && in_array($URIParts[0],$pages) )
{
    $uripart = $URIParts[0];
    if( in_array($uripart,$somearray) )
    {
        $page = $uripart;
    }
    ...
    else
    {
        $page = "index";
    }
}
else
{
    $page = "index";
}

if( $URIPartsCount>1  )
{
    $todo =  $URIParts[1];
}
else
{
    $todo = "";
}

<强>的.htaccess

RewriteEngine on  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*)$ index.php?q=$1 [QSA]  

答案 1 :(得分:0)

我认为你这样做是倒退的。为什么不将特定的URL模式路由到您希望他们去的模块?更容易。