Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Yii中重写url?_Php_Yii_Url Routing - Fatal编程技术网

Php 如何在Yii中重写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

我在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 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/”,
...
),
...
),
...
),
这意味着url
mysite.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/”,
...
),
...
),
...
),
这意味着url
mysite.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/”,
...
),
...
),
...
),
这意味着url
mysite.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
,需要编辑规则数组,如下所示