2013-02-03 200 views
1

我在Yii框架工作,並嘗試使用htaccess文件 這是我的文件 (在第一步,我想用一個簡單的規則來工作)重寫URLhtaccess的重寫規則不起作用

RewriteEngine on 

# if a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^carguide$ MainModel/index/304 [NC,L] 

# otherwise forward it to index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 


# otherwise forward it to index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 

我想重寫URL carguide到mainModel/index/304, ,但沒有米我試過yii收到orliginal url並引發404錯誤。

這裏是日誌文件:

strip per-dir prefix: C:/xampp/htdocs/cars/carguide -> carguide 
applying pattern '^carguide$' to uri 'carguide' 
RewriteCond: input='C:/xampp/htdocs/cars/carguide' pattern='!-f' => matched 
RewriteCond: input='C:/xampp/htdocs/cars/carguide' pattern='!-d' => matched 
rewrite 'carguide' -> 'MainModel/index/304' 
add per-dir prefix: MainModel/index/304 -> C:/xampp/htdocs/cars/MainModel/index/304 
strip document_root prefix: C:/xampp/htdocs/cars/MainModel/index/304 -> /cars/MainModel/index/304 
internal redirect with /cars/MainModel/index/304 [INTERNAL REDIRECT] 
add path info postfix: C:/xampp/htdocs/cars/MainModel -> C:/xampp/htdocs/cars/MainModel/index/304 
strip per-dir prefix: C:/xampp/htdocs/cars/MainModel/index/304 -> MainModel/index/304 
applying pattern '^carguide1$' to uri 'MainModel/index/304' 
add path info postfix: C:/xampp/htdocs/cars/MainModel -> C:/xampp/htdocs/cars/MainModel/index/304 
strip per-dir prefix: C:/xampp/htdocs/cars/MainModel/index/304 -> MainModel/index/304 
applying pattern '.' to uri 'MainModel/index/304' 
RewriteCond: input='C:/xampp/htdocs/cars/MainModel' pattern='!-f' => matched 
RewriteCond: input='C:/xampp/htdocs/cars/MainModel' pattern='!-d' => matched 
rewrite 'MainModel/index/304' -> 'index.php' 
add per-dir prefix: index.php -> C:/xampp/htdocs/cars/index.php 
strip document_root prefix: C:/xampp/htdocs/cars/index.php -> /cars/index.php 
internal redirect with /cars/index.php [INTERNAL REDIRECT] 
strip per-dir prefix: C:/xampp/htdocs/cars/index.php -> index.php 
applying pattern '^carguide$' to uri 'index.php' 
strip per-dir prefix: C:/xampp/htdocs/cars/index.php -> index.php 
applying pattern '.' to uri 'index.php' 
RewriteCond: input='C:/xampp/htdocs/cars/index.php' pattern='!-f' => not-matched 
pass through C:/xampp/htdocs/cars/index.php 

我試圖改變的標記,添加一個RewiteBase。

+0

'內部重定向與/ cars/MainModel/index/304 [內部重定向]'這似乎是問題,您發佈的重寫規則不會顯示任何會導致此問題的東西,所以它在您的其他位置組態。 –

回答

1

正如我所看到的,您不需要使用.htaccess爲您網站的每個頁面創建特定的重寫規則。按照建議的here使用簡單的.htaccess就足夠了,然後使用Yii的URL manager配置您的重寫規則。

UPDATE

如果你的控制器的名字是mainModel和你的行動的名字是index(Yii中方面的路線是mainModel/index),你希望這個頁面是通過http://yoursite/carguide accessable那麼你在URL經理的配置protected/config/main.php看起來是這樣的:

'urlManager' => array(
    'urlFormat' => 'path', 
    'showScriptName' => false, 
    'rules' => array(
     'carguide' => 'mainModel/index', 
    ) 
), 

UPDATE

Yii的URL管理器類支持的配置屬性請參考this page

+0

嗨,感謝您的回覆, 我試圖添加將重定向此地址的規則。 MainModel是我的控制器和索引是行動,但我得到了404錯誤: – user1850713

+0

你已經添加了什麼規則?我用適合我的例子更新了答案。 – Ezze

+0

對不起,我錯誤地提交重播:) 非常感謝它 - 我添加了正確的規則。 – user1850713