我在站点控制器中有一个名为contact的动作,所以当我在浏览器中打开它时,url显示为:mysite.com/index.php/site/contact
,我想将其更改为动作的视图名称,所以它应该是mysite.com/contact.php
,怎么做?
答案 0 :(得分:3)
要从网址中删除index.php,您需要将'showScriptName' => false
添加到/protected/config/main.php文件中的组件urlManager数组中:
// application components
'components'=>array(
...
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
...
),
...
),
...
),
这会为您的页面mysite.com/site/contact
制作路线。要删除/site
您需要编辑规则数组,这样的内容可能会有效;
// application components
'components'=>array(
...
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
...
'<action:\w+>.php'=>'site/<action>',
...
),
...
),
...
),
这意味着网址mysite.com/contact.php
将呈现网站/联系路由。
修改强>
回答你的问题&#39;不,我想让它呈现mysite.com/one,其中一个是字符串ID&#39;:
您必须小心这些短网址规则,因为其他路径会选择此类广泛规则,并在您不希望重定向时重新路由用户。但是,要将mysite/one
重定向到mysite/mycontroller/myaction?id=one
,您可以使用'<id:\w+>'=>'mycontroller/myaction'
但是,正如我所说的,要小心,这将使用单字路径重新路由所有。例如,采取这种情况:
user
index
控制器的user
操作(路由user/index
)mysite.com/user
(通常会呈现mysite.com/user/index
)现在可以将用户重定向到mysite/mycontroller/myaction?id=user