站点结构要提前设计好:伪静态要在建站时就一并设置

发布于 2021-08-24  746 次阅读


一、网站SEO优化,伪静态在建站时就应该设置好

百度在官方搜索引擎优化课上就强调过,网站的URL结构要清晰,这是网站的基本素质,其在《搜索公开课复盘之<搜索算法全解析>》这篇文章里就提到过:

站点结构清晰,并且站点内容最好有清晰的层级逻辑,例如:主页>目录>进一步的目录>内容详情页>内链回其他层级,形成一个树状结构,并且反应在URL的结构上

很多人建站时随便处理,等到最后想起设置伪静态时,网站已经更新了几十篇甚至上百篇文章了。

这个时候就不要随意更改URL结构了,否则一不小心就会造成以前的页面打不开。

小编一直用wordpress程序来建站的,很早之前,有个网站就是中途想起做个伪静态,然后就直接去wordpress后台的“设置”-“固定连接”-“自定义结构”里改了。

改的时候很爽,改完就悲剧了。以下面为例:

改之前默认的朴素,链接是这样“http://xinyang.hongtk.cn/?p=1”

wordpress链接默认设置“朴素”
wordpress链接默认设置“朴素”

再点击最下面的自定义结构,然后接着后面输入 /index.php /%post_id%.html ,然后保存更改,地址就会变为静态地址了,但是这样还不行,你会发现文章页面都打不开了。

WordPress老网站做伪静态更改固定链接后文章页打不开了
WordPress老网站做伪静态更改固定链接后文章页打不开了

出现这种情况这是因为缺少伪静态规则,这是你当初建站的时候没有考虑设置伪静态规则!!!傻了吧?下面除了重写伪静态规则,还要考虑301重定向。

二、如果建站真的粗心没设置,后期wordpress修改固定链接仍然可以打开页面为伪静态的操作

用wordpress所显示的是动态页面不利于搜索引擎收录,seo貌似都在说静态地址的收录相对要比动态地址好些,但是此时你已经积累了很多文章了,那么你就要考虑下面这些问题:

  • 考虑好新的固定链接格式;
  • 旧地址301跳转到新地址;
  • 各大搜索引擎的收录(sitemap更新);
  • 文章内链地址的更新;

至于以上4点,要怎么详细操作,大家可以去看下WordPress大学的这篇文章《WordPress老网站更改固定链接的经验与注意事项》,里面有详细介绍,只用一个插件就能搞定,不用改代码,很方便。

然后关于WordPress固定链接伪静态化设置规则,主机有Rewrite组件组件的话,通过Rewrite组件做网站伪静态设置:

首先我们复制下面代码

[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /favicon.ico /favicon.ico [L]
# For file-based wordpress content (i.e. theme), admin, etc.
RewriteRule /wp-(.*) /wp-$1 [L]
# For normal wordpress content, via index.php
RewriteRule ^/$ /index.php [L]
RewriteRule /(.*) /index.php/$1 [L]

把这个代码放到记事本里面,保存为 httpd.ini然后直接把这个文件上传到根目录即可打开伪静态,如果上面这个传上去还是打不开页面,请把下面代码复制下来,替换掉刚才保存的代码再试试:

[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# wordpress 伪静态规则
# For tag(中文标签以及标签翻页的规则)
RewriteRule /tag/(.*)/page/(d+)$ /index.php?tag=$1&paged=$2
RewriteRule /tag/(.+)$ /index.php?tag=$1
# For category(中文分类以及分类翻页的规则)
RewriteRule /category/(.*)/page/(d+)$ /index.php?category_name=$1&paged=$2
RewriteRule /category/(.*) /index.php?category_name=$1
# For sitemapxml
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /sitemap.html /sitemap.html [L]
RewriteRule /sitemap_baidu.xml /sitemap_baidu.xml [L]
RewriteRule /favicon.ico /favicon.ico [L]
# For file-based wordpress content (i.e. theme), admin, etc.
RewriteRule /wp-(.*) /wp-$1 [L]
# For normal wordpress content, via index.php
RewriteRule ^/$ /index.php [L]
RewriteRule /(.*) /index.php/$1 [L]

不过每个主机/服务器环境(IIS/Apache/Nginx)不同,设置略有不同。具体可以参考wordpress大学的这篇伪静态规则 文章《WordPress 伪静态规则(IIS/Apache/Nginx)

当然,虽然设置了伪静态,只是展示的伪静态后缀,其实还是动态页面,如果想完全静态页面,可以安装WP Super Cache或者Hyper Cache插件,为全站生成静态页面缓存。此插件我也是在网上听说的额,自己没用过。如果有人用,请告诉我一声好不好用。