2014-03-26 37 views
0

我需要重寫以下URL重寫URL中誼與htaccess的

site.com/events/?event=test

念想

site.com/events/test

我很好,無論是在htaccess或在urlManager。

+0

嗨安德魯,我注意到你沒有接受任何你以前的問題的答案。請點擊回答問題左邊的綠色複選標記,以便其他人知道它已經解決了(您也可以將自己的答案標記爲已接受)。 –

回答

1

如果/events是你的控制器類,和/test是你的索引操作參數:

class EventController extends Controller { 

    public function actionIndex($event) { 

添加此規則,以你的urlManager:

'urlManager' => array(
    'urlFormat' => 'path', 
    'rules' => array(
     'event/<event>' => 'event/index', 

     ... 

中的URL這將自動映射test/events/test添加到索引操作中的參數$event

public function actionIndex($event) { 

     echo $event; // produces "test" 
+0

完全有效 –

0

htaccess應該是:

<ifModule mod_rewrite.c> 
# Turn on the engine: 

RewriteEngine on 

# Do not perform redirects for files and directories that exist: 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# For everything else, redirect to index.php: 

RewriteRule . index.php 
</ifModule> 

urlmanager應該是:

'urlManager'=>array(
     'showScriptName'=>false, // removed index.php with .htaccess 
     'urlFormat'=>'path', 
     'rules'=>array(
      'test' => 'site/test' // Where controller/view 
    ), 
), 
0

這可以在htaccess的做用以下:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{QUERY_STRING} ^event=([^/]+)$ 
RewriteRule ^events/$ /events/%1/? [R=302,L] 

上面應該工作(改變R=302R=301,當你確定重定向工作正常)。