最近开始捣鼓闲置已久的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的依葫芦画瓢还可以写出来,但是通用的那种就不会。