YIi url美化
一、Yii Url美化,配置urlManager组件
'urlManager' => [
'enablePrettyUrl' => true, // 开启URL美化,可以去掉 index.php?r=
'showScriptName' => false, // 如果设置为 true,会显示 index.php
'suffix' => '.html', // 实现伪静态
'rules' => [ // 在 rules 中设置自定义规则
'<controller:\w+>/<id:\d+>' => '<controller>/detail',
'<controller:\w+>/<id:\d+>/<action:(create|update|delete)>' => '<controller>/<action>', // 在控制器和动作之间是 id 的值
'<controller:(post|comment)>s' => '<controller>/index', // 右边post和comment index 的动作 都可以用左边控制器ID加上 s 来代替
'posts' => 'post/index', // 如果访问 post/index 显示为 posts.html
],
],
'<controller:\w+>/'<id:\d+> => '<controller>/detail' 详解:
当url出现由若干字符 + / + 若干个数字来组成字符串的时候,urlManager 就会来判断这个字符串是否匹配规则左边的正则表达式,如果能匹配的话,这个字符串就会被转换成为规则右边的这种样式,在 controller后面跟上 /detail这个字符串,
然后把规则左边的 id 已经若干的数字以参数的形式跟在动作的后面。 转换详情:
例如:www.example.com/post/42.html 在规则 suffix => .html的作用下转换为:
www.example.com/post/42 在规则'<controller:\w+>/'<id:\d+> => '<controller>/detail'的作用下转换为:
www.example.com/post/detail?id=42 在规则 'enablePrettyUrl' => true的作用下转换为:
www.example.com/index.php?r=post/detail?id=42 最后这个 url 就是完整路径
二、createUrl()方法
1、UrlManager 组件的createUrl方法可以创建各种类型的url链接
2、可以把路由和要传递的参数作为 createUrl 方法的参数进行创建
3、能够自动转换为符合URL美化规则的链接
使用示例:
// url格式为:index.php?r=site%2Findex¶m1=value1¶m2=value2
Yii::$app->urlManager->createUrl(['site/index','param1'=>'value1','param2'=>'value2']); // url格式为:index.php?r=site%2Findex¶m1=value1#name
Yii::$app->urlManager->createUrl(['site/index','param1'=>'value1','#'=>'name']);
路由 参数 锚点
记住,代码中,一定要注意尽量不要使用硬编码
三、url助手类
1、yii\helpers\Url::to()来创建各种类型的url链接
2、可以把路由和要传递的参数作为url助手类方法的参数来进行创建
// index.php?r=post%2Findex
echo Url::to(['post/index']); // index.php?r=post%2Fview&id=100
echo Url::to(['post/view','id'=>100]); // index.php?r=post%2Fview&id=100#content
echo Url::to(['post/view','id'=>100,'#'=>'content']); // index.php?r=post%2Findex
echo Url::to(['post/index'],true); // 创建一个硬链接 // https//:www.example.com/index.php?r=post%2Findex
echo Url::to(['post/index'],'https'); // 创建含有https的url
四、虚拟主机URL美化
在项目根目录新建一个 .htacces 的文件
将重写规则写入 .htacces 文件
例如写入下面这一段:
# use mod_rewrite for pretty URL support
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php # use index.php as index file
DirectoryIndex index.php # ...other settings...
# Apache 2.4
Require all granted ## Apache 2.2
# Order allow,deny
# Allow from all
httpd.conf需要改为如下:
<VirtualHost *:80>
ServerName frontend.test // 设置虚拟主机名
DocumentRoot "/path/to/yii-application/frontend/web/" // 虚拟主机的web根目录 <Directory "/path/to/yii-application/frontend/web/">
AllowOverride All //允许 .htacces 文件覆盖重写规则
</Directory>
</VirtualHost>
这种情况是在 虚拟主机不许给我们修改的时候使用,但是Apache服务的配置必须能被覆盖才行。
YIi url美化的更多相关文章
- yii url美化 urlManager组件
yii的官方文档对此的解释如下: urlSuffix 此规则使用的url后缀,默认使用CurlManger::urlSuffix,值为null.例如可以将此设置为.html,让url看起来“像”是一 ...
- Yii地址美化(nginx环境)
通过urlmanager实现yii地址美化,需配合服务器中的rewrite配置 1.在'components'中加入 'urlManager'=>array( 'ur ...
- Yii2的urlManager URL美化
Yii1.*与Yii2中配置路由规则rules是几乎是一样的,但还是有细微的差别. 在Yii1.*中开启path路由规则直接使用 'urlFormat' => 'path', 但在Yii2中已经 ...
- yii2 url 美化参数
所谓的url参数美化就是将冗长的字符串 进行正则替换 yii2 框架的url参数美化完成需要完成两个阶段 第一个阶段分apache和nginx 两种的配置 apache :1.1 必须开启rewrit ...
- Yii URL
参考文章: http://blog.csdn.net/iefreer/article/details/21325371 以http://localhost/basic/web/index.php?r= ...
- Yii url createUrl redirect相关
一篇文章: 在yii中明明白白生成网址: 在Yii中经常要生成URL,不管是为了自动跳转还是仅仅是一个链接.下面对Yii中的URL生成做了一个总结.提示:以下controllerX代表控制器X,act ...
- yii框架美化访问路径,去掉index.php/?r=部分
一.找到配置文件(ps:advance高级模板) 在工程目录-> backend目录 或 frontend目录 -> config目录 -> main.php文件 -> 在 r ...
- Yii2开启enableprettyurl(url美化)无效
最终显示的url格式为:http://localhost/yii2/frontend/web/site/about 在/config/main.php中 'components'=>[] 中添加 ...
- Yii2.0 URL美化
1. 程序初始化注册文件,加入如下: 'urlManager' =>[ 'class' => 'yii\web\UrlManager', 'showScriptName' =>fal ...
随机推荐
- Android Studio编译OsmAnd出现警告:GeoPointParserUtil.java使用或覆盖了已过时的 API。有关详细信息请使用-Xlint:deprecation重新编译
[背景] 之前折腾: [记录]Android Studio中导入OsmAnd并编译 期间,遇到了编译警告: 1 2 3 4 5 :OsmAnd-java:compileJava 注: E:\crifa ...
- JDK1.8 JVM参数配置
JAVA_OPTS=" -server #服务器模式 -Xmx4g #JVM最大允许分配的堆内存,按需分配 -Xms4g #JVM初始分配的堆内存,一般和Xmx配置成一样以避免每次gc后JV ...
- RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较
RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四种Exchange:fanout,direct, ...
- pandas处理finance.yahoo股票数据 WTI CL USO OIL
1.参考 用Python做科学计算-基础篇 »matplotlib-绘制精美的图表 »快速绘图 使用pyplot模块绘图 2.数据来源 CL USO OIL 3.代码 #encoding='utf-8 ...
- 有了这些,java IO就不愁了
IO的总结: java中相对路径和绝对路径的问题: 在web项目中,如果生成的文件前面没有 / 开头的话,表示的是生成的文件在当前项目的根目录下如student.txt在项目中刷新就能看到. 如果是以 ...
- sql取逗号前后数据与批量修改某一字段某一值
sql取逗号后的值 SELECT SUBSTRING_INDEX(字段,) FROM 表名 sql取逗号前的值 SELECT SUBSTRING_INDEX(字段,) FROM 表名 批量修改 UPD ...
- thinkphp5 model 模型
新增更新都是save.saveAll 怎么识别他们 实例化模型后调用save方法表示新增: 查询数据后调用save方法表示更新: save方法传入更新条件后表示更新: isUpdate(true): ...
- 基于Docker的服务器搭建
-----------基于Docker的多种服务器搭建----------- 开发环境 本机上的虚拟机 Centos7.4 Docker1.13.1 Openssl1.1.1 1 Nginx 1.1 ...
- 转:自旋锁(spinlock)
自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名. 由于 ...
- jmeter正则表达式提取器提取特定字符串后的全部内容
jmeter进行JDBC请求时,请求后的响应结果在传递给下一个请求使用时,需要用到关联,也在jmeter中,关联通过正则表达式提取器实现. 但是,在JDBC请求后的响应结果中,往往需要关联的内容是只有 ...