如何在Yii框架中自动设置URL友好化

7

我刚开始学习yii框架,阅读了这篇有关yii如何设置URL的教程。

但是我不知道,如果我有10个控制器,我是否应该在配置文件中逐个定义控制器?是否有更好的方法来为所有控制器设置友好的URL,例如www.yoursite.com/yourController/yourAction/yourID?

我认为codeigniter会自动处理这个问题...那么yii呢?

2个回答

19

在 /protected/config/main.php 中添加...

    'urlManager'=>array(
        'urlFormat'=>'path',
        'showScriptName' => false,      
        ),
    ),

在您的网站根目录下,有一个名为 .htaccess 的文件。

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

1
我希望我能为这个答案给予+10票,因为如果早点找到它,就可以节省我一个小时的搜索和努力让它正常工作。 - Milan Babuškov
我按照你的答案进行了操作,但是似乎没有成功。我在使用Yii框架生成应用程序时,在[应用程序根目录]/protected/config/main.php中取消了urlManager的注释,并将你提供的.htaccess文件添加到了[应用程序根目录]/.htaccess中,但是我仍然遇到了404错误。请帮助我解决这个问题。 - Thu Ra
@tharsoe 我遇到了404错误,我的.htaccess文件不在根目录中,而是在受保护的文件夹内。我将它移到了根目录(与index.php相同的位置),然后它开始正常工作了。 - albertski

1
Yii 中也有自动生成 URL 的功能。例如,在您的模板中只需编写此类 URL,而无需手动指定路由即可生成:
<?php echo CHtml::link('topic title',array('topic/view','id'=>$topic->id,'var'=>'123')); ?>

渲染后的URL将如下所示:

/topic/view/id/1/var/123

然后在我们的 actionView() 方法中使用这些参数:

...
$id=$_GET['id'];
$var=$_GET['var'];
...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接