要从 url 中删除 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>',
...
),
...
),
...
),
这意味着 URL mysite.com/contact.php 将呈现站点/联系人路由。
编辑
回答您的问题“不,我希望它呈现 mysite.com/one,其中一个是字符串 id”:
你必须小心这样短的 url 规则,因为像这样的宽泛的规则会被其他路径拾取,并在你不希望它们被重定向时重新路由用户。但是,要将mysite/one 重定向到mysite/mycontroller/myaction?id=one,您可以使用'<id:\w+>'=>'mycontroller/myaction'
但是,正如我所说,要小心,这将用一个单词路径重新路由所有内容。以这种情况为例:
- 您有一个名为
user 的控制器
- 您想导航到
user 控制器的index 操作(路由user/index)
- 导航到
mysite.com/user(通常会呈现mysite.com/user/index)
这会将用户重定向到mysite/mycontroller/myaction?id=user