如何确保URL的唯一性
来源:互联网 发布:淘宝优惠券转化器 编辑:程序博客网 时间:2024/05/21 05:43
很多时候对于 SEO 来说每个页面拥有唯一的地址是很重要的。
例如我们有以下规则:
'post/<id:\d+>'=>'post/read',
以下的 URL 是有效的:
post/read/id/5post/read?id=5post/5
如果我们有后缀,例如 .html,以下的 URL 是有效的,
post/read/id/5.htmlpost/read.html?id=5post/5.html
一共有 6 个 URL,这不符合 SEO,
解决的方法很简单,只需在你的控制器(Controller)中写上一下代码:
public function beforeAction($action) { if (Yii::app()->request->url != CHtml::normalizeUrl(array_merge(array($this->route), $_GET))) $this->redirect(CHtml::normalizeUrl(array_merge(array($this->route), $_GET)), true, 301); return parent::beforeAction($action); }
这将会吧所有的 URL 地址转向到指定的一个 '合法地址', 使用301代替302将会使浏览器(google机器人)知道正确的地址.
你可以写一个基类来实现:
<?php/** * BlockController 是一个自定义的基类. * 所有需要唯一 URL 的控制器都将继承它. */class BlockController extends Controller{ public function beforeAction($action) { if (Yii::app()->request->url != CHtml::normalizeUrl(array_merge(array($this->route), $_GET))) $this->redirect(CHtml::normalizeUrl(array_merge(array($this->route), $_GET)), true, 301); return parent::beforeAction($action); } }
tip|你不应该将这个规则使用在 actionError 和 actionIndex,所以你如果想给 siteController中的动作使用唯一 URL 你不应当继承 上述基类,否则你将会使用一个特殊方法来处理它们两个产生的异常。
- 如何确保URL的唯一性
- UITableView中确保UITableViewCellAccessoryCheckmark的唯一性
- set如何确保高效保证值唯一性
- 确保对象的唯一性——单例模式
- NSSet和NSMutableSet 确保数据的唯一性
- NSSet和NSMutableSet 确保数据的唯一性
- 确保对象的唯一性——单例模式
- 确保对象的唯一性——单例模式
- 确保对象的唯一性——单例模式
- 确保对象的唯一性——单例模式
- 单例模式(1) - 确保对象的唯一性
- 确保对象的唯一性——单例模式
- 确保对象的唯一性——单例模式
- 确保对象的唯一性——单例模式
- 单例模式-确保对象的唯一性
- 确保对象的唯一性——单例模式
- 确保对象的唯一性——单例模式 (一)
- 确保对象的唯一性——单例模式 (二)
- Hibernate性能优化之————延迟加载与抓取策略
- EZ Gui创建ScrollList(滚动列表)
- MOSFET驱动电路应用实例
- gzip: stdin: not in gzip format
- 几点GPU的light
- 如何确保URL的唯一性
- OCJP-Java软件工程师 培训课程介绍
- Spring Batch 简单介绍
- 与大家讨论如何用opencore amr在iOS上decode(已解决)
- 【摘抄】关于Java schedule job Timer的schedule方法详解
- 好生惆怅
- 创建一个flash as3.0按钮并添加超链接
- 场效应管电机驱动-MOS管H桥原理
- FFmpeg vc 入门