2013-02-03 198 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