Fecmall Url重写

fecmall url 重写,属于自定义的方式重写,定义的重写会被保存到mongodb中。

1.去掉index.php

对于url: https://fecshop.appfront.fancyecommerce.com/index.php/special-occasion 为了seo的考虑,我们希望把index.php/去掉,下面是设置方法。

找到文件 @appfront/config/fecshop_local_services/Url.php ,内容如下:

return [
	'url' => [
		'showScriptName'=> false, # if is show index.php in url.  if set false ,you must config nginx rewrite 
	],
];

showScriptNametrue代表url中显示index.php ,false代表url中不显示index.php

当设置了false,也就是不显示index.php,需要在nginx设置重写 ,具体可以搜索这个(用bing.com搜索就不错,不需要翻墙,也可以 切换英文搜索)。

2. 重写原理

2.1 在数据库的产品或分类保存的时候,会有一个唯一的url_key字符串,和真实的yii2的 url key对应,譬如/xxxxxxx 对应 /catalog/product/index?id=xxxx

2.2当一个url访问的时候,会到数据库(mongodb)中查询,该url是否在数据库中存在,如果存在, 则会使用对应的真实的yii2的url路径,譬如上面的/catalog/product/index

2.3 执行相应的模块

关于重写的原理详细参看:yii2 Url 自定义 伪静态url

3. 重写的url类型

3.1 page页面

3.2 category分类页面

3.3 product产品页面

在上述页面保存的时候,如果填写url_key就会使用填写的url_key,如果不填写 就会使用名字生成。

如果生成的url在数据库中存在,那么会在后面加入一组随机数字,如果随机数字还存在, 那么就会使用另外一组随机数字,直到唯一为止。

Url自定义(Url 重写)是为了seo,让网页中的关键字,标题,在url中也出现。

4.fecmall实现重写的文件

文件为:@fecshop/yii/web/Request.php ,重写了@yii/web/Request的一部分方法实现的。 具体的实现方法,你可以参看文件@fecshop/yii/web/Request.php的内容