您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
nginx-商城url重写实战
发布时间:2017-11-23 12:34:23编辑:雪饮阅读()
(1)一个简单的商品详情页url重写
动态地址:http://192.168.0.22/ecshop/goods.php?id=1
静态地址:http://192.168.0.22/ecshop/goods-1.html
location /ecshop {
rewrite "goods-(\d{1,7})\.html" /ecshop/goods.php?id=$1;
}
注意:用url重写时,正则里如果有”{}”,正则要用双引号包起来
测试发现id为某些值时访问就异常了,其实在数据库中观察才发现没有该id,如id为2时就会访问异常,所以此种异常不用管。
对模的引用,又叫反向引用或后向引用
(2)修复后台界面错误提示
在ecshop目录下admin/includes/init.php中找到
define('ECS_ADMIN', true);
error_reporting(E_ALL);
改成
define('ECS_ADMIN', true);
error_reporting(0);
再找到如下代码段直接删除掉
if ((DEBUG_MODE & 1) == 1)
{
error_reporting(E_ALL);
}
else
{
error_reporting(E_ALL ^ E_NOTICE);
}
if ((DEBUG_MODE & 4) == 4)
{
include(ROOT_PATH . 'includes/lib.debug.php');
}
然后登陆后台,应该还有错误信息,可能是缓存信息,多刷新几次就ok
然后找到”商店设置->基本设置->url重写”
此处有“禁用,简单重写,复杂重写”三个选项,默认为禁用,接下来将会多次用到这来的选项切换功能来更改ecshop的url重写模式。
切换模式前最好先把”商店设置->网店信息->商店公告”处的代码删除,只保留纯文字,否则你的模式切换操作无法提交成功。
(3)编写文章页url重写规则
接下来在简单重写模式下编写对于文章页的nginx重写规则
静态url:http://192.168.0.22/ecshop/article-33.html
location /ecshop {
rewrite "goods-(\d{1,7})\.html" /ecshop/goods.php?id=$1;
rewrite "article-(\d{1,7})\.html" /ecshop/article.php?id=$1;
}
通过后台的模式切换为“禁用”可以方便的查看原来的动态url,以便为其它模式下的静态url参考各项参数。
(3)完整url重写规则
注意:该规则中有些短规则放后面了,是因为某些短规则在某些长规则中可能会做为前缀,若是如此,则长规则由于位置靠后会先被短规则匹配到,从而导致长规则不生效了。所以才会把某些短规则放后面的。
location /ecshop {
rewrite "goods-(\d{1,7})\.html" /ecshop/goods.php?id=$1;
rewrite "article-(\d{1,7})\.html" /ecshop/article.php?id=$1;
rewrite category-(\d+)-b(\d+)-min(\d+)-max(\d+)-attr([\d\.]+)-(\d+)-(\w+)-(\w+)\.html /ecshop/category.php?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5&page=$6&sort=$7&order=$8;
rewrite category-(\d+)-b(\d+)-min(\d+)-max(\d+)-attr([\d\.]+).*\.html /ecshop/category.php?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5;
rewrite category-(\d+)-b(\d+)\.html /ecshop/category.php?id=$1&brand=$2;
}
关键字词:nginx,url,重写
上一篇:nginx-集群性能测试
下一篇:nginx-附件