Home  >  Article  >  Backend Development  >  yii2 url优化问题

yii2 url优化问题

WBOY
WBOYOriginal
2016-06-06 20:20:341296browse

想要对Url进行优化,全部变为路径模式

如:http://xxx.com/topic/index?id=1&type=1
转变为:http://xxx.com/topic/index/id/1/type/1

可以通过配置rules:
'//id//type/'=>'/'

但是如果我传得参数不一样,比如再加一些参数,或者参数名非type和id,就无法匹配这个rule,难道要针对每一中参数都配置一个rule吗?

想通过正则把参数写为或的形式,但是没能成功,不知道这个正则的写法和规则是怎么样的,有没有官方文档说明啊?

还有一种方式是重载urlManager类中的方法,感觉稍微复杂了一点,还没尝试,请大家指点迷津,给个思路?谢谢了!

回复内容:

想要对Url进行优化,全部变为路径模式

如:http://xxx.com/topic/index?id=1&type=1
转变为:http://xxx.com/topic/index/id/1/type/1

可以通过配置rules:
'//id//type/'=>'/'

但是如果我传得参数不一样,比如再加一些参数,或者参数名非type和id,就无法匹配这个rule,难道要针对每一中参数都配置一个rule吗?

想通过正则把参数写为或的形式,但是没能成功,不知道这个正则的写法和规则是怎么样的,有没有官方文档说明啊?

还有一种方式是重载urlManager类中的方法,感觉稍微复杂了一点,还没尝试,请大家指点迷津,给个思路?谢谢了!

直接把 UrlManager中这个参数配置成true

<code>   /**
     * 路由的路径化
     * 
     * @var bool
     */
    public $enablePrettyUrl = true;
</code>

第一:在配置文件加上 urlManager项,看代码:

<code> 'urlManager'=>[
    'class' => 'yii\web\UrlManager',
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules'=>[
    '<controller:>/<id:>/<action:>' =>'<controller>/<action>',
    '<controller:>/<id:>' => '<controller>/read',
    '<controller:>s' => '<controller>/list',
         ],
     ],</controller></controller:></controller></id:></controller:></action></controller></action:></id:></controller:></code>

第二,在index.php同级目录下新建.htaccess文件,把下面的代码贴上:

<code>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</code>

原文地址:http://www.yiichina.com/tutorial/622

或者参考这个:http://www.cnblogs.com/dcb3688/p/4607968.html

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn