Opencart3.0开启伪静态(宝塔面板Nginx环境)

最近开始捣鼓闲置已久的opencart,想着多少做点SEO优化,其中重要的一步便是开启伪静态。

回想WP当时也是折腾了一番,换服务器的时候也是换了插件然后又各种折腾(现在插件貌似更新了,站点地图搜索引擎读不出来了,但网页的伪静态似乎没出问题)。

伪静态的原理就是通过技术手段将动态网页的URL(一般冗长且含有?等特殊字符)调整成静态URL(相对简短有规则)的展示形式。一般来说,同一个网页,静态URL相比动态URL更容易被搜索引擎收录。

于是说整就整,opencart后台默认有开启伪静态的配置。(如下图)

不过描述只针对了Apache说明,这就让我一度很苦恼。

这里说明下,我的服务器是宝塔面板搭建的Nginx环境。

度娘以及在中文官网搜了很久,也没找到一个合适我的解决方案,虽然中间出现过短暂的可用,但这种可用只存在于配置了SEO URL的页面,未配置SEO的页面直接404报错。

这显然不是我期望的结果。

最后通过中文官网伪静态教学视频回想起最新的opencart3.8目录里有一个Nginx的伪静态配置文件nginx.conf,于是尝试直接把内容复制到宝塔面板的站点伪静态规则配置中,保存。(如下图)

然后重启Nginx服务,以及重新开启opencart后台伪静态配置开关。

回到商城前端再次尝试访问配置了SEO URL的页面与未配置的页面。

能够分别以静态URL(配置了SEO URL的页面)和动态URL(未配置的页面),正常访问。

搞定!

记录一下对应伪静态配置规则,以备不时之需。

location / {

try_files $uri @opencart;

}

location @opencart {

rewrite ^/sitemap.xml$ /index.php?route=extension/feed/google_sitemap last;

rewrite ^/googlebase.xml$ /index.php?route=extension/feed/google_base last;

rewrite ^/payment_callback/(.*) /index.php?route=extension/payment/$1/callback last;

rewrite ^/callback/(.*) /index.php?route=extension/module/social/login&provider=$1 last;

rewrite ^/system/download/(.*) index.php?route=error/not_found last;

rewrite ^/blog$ /index.php?route=panda/blog last; rewrite ^/(.+)$ /index.php?_route_=$1 last;

}

location /admin/ {

index index.php;

}

location = /robots.txt {

allow all;

}

location ~* (\.(js|css|png|jpg|jpeg|gif|ico|otf|eot|svg|ttf|woff|woff2))$ {

expires max;

}

location ~* (\.(tpl|ini|twig|log))$ {

deny all;

}

伪静态规则据说就是在正则表达式的基础上实现的,针对单独URL的依葫芦画瓢还可以写出来,但是通用的那种就不会。

发表评论

您的电子邮箱地址不会被公开。