Php 如何在Yii中重写url?
我在site controller中有一个名为contact的操作,因此当我在浏览器中打开它时,url显示为:Php 如何在Yii中重写url?,php,yii,url-routing,Php,Yii,Url Routing,我在site controller中有一个名为contact的操作,因此当我在浏览器中打开它时,url显示为:mysite.com/index.php/site/contact,我想将其更改为该操作的视图名称,因此它应该是mysite.com/contact.php,如何操作?要从url中删除index.php,需要将'showScriptName'=>false添加到/protected/config/main.php文件中的组件urlManager数组中: // application co
mysite.com/index.php/site/contact
,我想将其更改为该操作的视图名称,因此它应该是mysite.com/contact.php
,如何操作?要从url中删除index.php,需要将'showScriptName'=>false
添加到/protected/config/main.php文件中的组件urlManager数组中:
// application components
'components'=>array(
...
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
...
),
...
),
...
),
这将为您的contant页面mysite.com/site/contact
提供路线。要删除/site
,您需要编辑规则数组,类似的操作可能会奏效
// application components
'components'=>array(
...
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
...
'<action:\w+>.php'=>'site/<action>',
...
),
...
),
...
),
//应用程序组件
“组件”=>数组(
...
“urlManager”=>数组(
“urlFormat'=>“路径”,
'showScriptName'=>false,
'规则'=>数组(
...
“.php”=>“site/”,
...
),
...
),
...
),
这意味着urlmysite.com/contact.php
将呈现站点/联系人路径
编辑
在回答您的问题“否,我希望它呈现mysite.com/one,其中one是字符串id”时: 您必须小心使用这些短url规则,因为这样的广泛规则将被其他路径拾取,并在您不希望重定向时重新路由用户。但是,要将
mysite/one
重定向到mysite/mycontroller/myaction?id=one
,您可以使用'=>'mycontroller/myaction'
但是,正如我所说的,小心点,这将以一个单词的路径重新路由所有内容。例如,以该场景为例:
- 您有一个名为
user
- 您希望导航到
控制器的用户
操作(路由索引
)用户/索引
- 导航到
(通常会呈现mysite.com/user
)mysite.com/user/index
现在,这会将用户重定向到
mysite/mycontroller/myaction?id=user
以从url中删除index.php,您需要将'showScriptName'=>false
添加到/protected/config/main.php文件中的组件urlManager数组中:
// application components
'components'=>array(
...
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
...
),
...
),
...
),
这将为您的contant页面mysite.com/site/contact
提供路线。要删除/site
,您需要编辑规则数组,类似的操作可能会奏效
// application components
'components'=>array(
...
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
...
'<action:\w+>.php'=>'site/<action>',
...
),
...
),
...
),
//应用程序组件
“组件”=>数组(
...
“urlManager”=>数组(
“urlFormat'=>“路径”,
'showScriptName'=>false,
'规则'=>数组(
...
“.php”=>“site/”,
...
),
...
),
...
),
这意味着urlmysite.com/contact.php
将呈现站点/联系人路径
编辑
在回答您的问题“否,我希望它呈现mysite.com/one,其中one是字符串id”时: 您必须小心使用这些短url规则,因为这样的广泛规则将被其他路径拾取,并在您不希望重定向时重新路由用户。但是,要将
mysite/one
重定向到mysite/mycontroller/myaction?id=one
,您可以使用'=>'mycontroller/myaction'
但是,正如我所说的,小心点,这将以一个单词的路径重新路由所有内容。例如,以该场景为例:
- 您有一个名为
user
- 您希望导航到
控制器的用户
操作(路由索引
)用户/索引
- 导航到
(通常会呈现mysite.com/user
)mysite.com/user/index
现在,这会将用户重定向到
mysite/mycontroller/myaction?id=user
以从url中删除index.php,您需要将'showScriptName'=>false
添加到/protected/config/main.php文件中的组件urlManager数组中:
// application components
'components'=>array(
...
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
...
),
...
),
...
),
这将为您的contant页面mysite.com/site/contact
提供路线。要删除/site
,您需要编辑规则数组,类似的操作可能会奏效
// application components
'components'=>array(
...
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
...
'<action:\w+>.php'=>'site/<action>',
...
),
...
),
...
),
//应用程序组件
“组件”=>数组(
...
“urlManager”=>数组(
“urlFormat'=>“路径”,
'showScriptName'=>false,
'规则'=>数组(
...
“.php”=>“site/”,
...
),
...
),
...
),
这意味着urlmysite.com/contact.php
将呈现站点/联系人路径
编辑
在回答您的问题“否,我希望它呈现mysite.com/one,其中one是字符串id”时: 您必须小心使用这些短url规则,因为这样的广泛规则将被其他路径拾取,并在您不希望重定向时重新路由用户。但是,要将
mysite/one
重定向到mysite/mycontroller/myaction?id=one
,您可以使用'=>'mycontroller/myaction'
但是,正如我所说的,小心点,这将以一个单词的路径重新路由所有内容。例如,以该场景为例:
- 您有一个名为
user
- 您希望导航到
控制器的用户
操作(路由索引
)用户/索引
- 导航到
(通常会呈现mysite.com/user
)mysite.com/user/index
现在,这会将用户重定向到
mysite/mycontroller/myaction?id=user
以从url中删除index.php,您需要将'showScriptName'=>false
添加到/protected/config/main.php文件中的组件urlManager数组中:
// application components
'components'=>array(
...
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
...
),
...
),
...
),
这将为您的contant页面mysite.com/site/contact
提供路线。要删除/site
,需要编辑规则数组,如下所示