2013-11-26 61 views
0

我正嘗試從Yii上的網址中刪除/site//user/。我試圖添加此代碼yii從url中移除子文件夾字符串

'contact' => array('site/contact', 'caseSensitive'=>false), 

但我仍然無法得到它的工作。我試圖讓我的所有靜態頁面看起來像mydomain.com/about.html

這裏有一些網址我想改變

/site/page?view=about ==> mydomain.com/about.html 
/site/contact.html ==> mydomain.com/contact.html 
/user/login.html ==> mydomain.com/login.html 

這裏是要我走到這一步,

'urlManager'=>array(
       'urlFormat'=>'path', 
       'urlSuffix'=>'.html', 
       'rules'=>array(
        '<controller:\w+>/<id:\d+>'=>'<controller>/view', 
        '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', 
        '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 
        '<action:.*>'=>'site/<action>', 
        'user/<controller:\w+>/<action:\w+>'=>'user/<controller>/<action>', 
       ), 
       'showScriptName' => false, 
      ), 

這是我的.htaccess

# Turning on the rewrite engine is necessary for the following rules and features 
# FollowSymLinks must be enabled for this to work 
<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    RewriteEngine On 
</IfModule> 

# Unless an explicit file or directory exists, redirect all request to Yii entry script 
<IfModule mod_rewrite.c> 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . index.php 
</IfModule> 

回答

1

看起來有些規則停留在您的012規則之前應用和user。第三個'<controller:\w+>/<action:\w+>'=>'<controller>/<action>'總是匹配任何路由並保留URL中控制器和操作的ID。由於應用了第一個匹配規則,所有以下規則都沒有意義。

您應該將規則移至rules數組頂部CUrlManager。假設mainuser是你的控制器的IDS他們看起來是這樣的:

'rules' => array(
    '<view:(about)>' => 'site/page' 
    '<action:(contact)>' => 'site/<action>', 
    '<action:(login)>' => 'user/<action>', 
    // the rest rules here 
) 

如果你想使用site/page航線不僅爲about視圖你應該遵循parameterizing routes technique。例如:

'<view:(about|guestbook|download)>' => 'site/page' 

使用類似'<view:\w+>' => 'site/page'代替也將轉換/contact.html/site/page?view=contact/login.html/site/page?view=login。因此,與這些網址匹配的所有其他規則永遠不會被應用,這是您無法接受的。

相關問題