WP 02 – 优化WordPress的固定链接 – Nginx重写URL
目录
1 为何要优化固定链接
博客的 URL, 对 SEO (搜索引擎优化)的影响很大, 由于种种原因, 动态资源的权重很低.
而 WordPress 中的默认固定链接是这样的: www.healchow.com/?p=95, 里面的问号直接告诉搜索引擎, 我这篇文章里有需要动态加载的资源, 地址参数随时可变, 而博客却还是同一篇.
—— 这对 SEO 很不友好, 搜索引擎会对这种网址降权处理, 导致不好搜索到此文章.
更多的细节, 可参考: WordPress的固定链接如何设置? – 魔笛手的回答 – 知乎
2 优化思路及步骤
2.1 WordPress 支持的固定链接
形式 | 示例 | 含义 | 是否需要服务器支持URL_Rewrite |
---|---|---|---|
/%post_id%.html |
/95.html |
以博客id为主, 带html结尾的伪静态 | 需要 |
/%postname% |
/build-blog |
以博客别名为主的伪静态 | 需要 |
/%year%/%monthnum% /%post_id%.html |
/2019/02/95.html |
以博客发布的年-月-博客id为主, 形成的伪静态 | 需要 |
关于伪静态:
伪静态的页面后缀可以是 html、htm 等格式, 它只是改变了 URL 的表现形式, 页面实际上还是动态页面, 类似于 JSP、ASP 类的页面, 需要根据 Get/Post 中的请求参数, 显示特定的内容;
静态页面可以节省服务器资源, 就像 txt 文本文件, 没有任何特殊的格式, 直接加载即可;
而伪静态页面仍然是动态页面, 需要动态地渲染一些效果, 而且还要服务器开启 URL 重写支持 —— 略微增加了服务器的压力.
SEO 的优秀实践中有这样一条: 资源最好在3级目录以内即可访问, 即网站根目录后的斜线 /
不要超过3级, 在本站中我设置为了 自定义结构: https://healchow.com/articles/%post_id%.html
.
2.2 配置后访问出现 404 错误
自定义固定链接后, 访问博客文章时出现 404 错误.
原因: 一般都是服务器没有开启 URL_Rewrite 的支持导致的, 所以需要在服务器中修改相关设置, 或者找你的主机服务商寻求帮助.
说明:
我用的是阿里云的 ECS 服务器搭建的 WordPress 站点, 可以自行修改服务器的相关配置;
建站时Web服务器使用了 Nginx, 所以 Apache 环境下的修改只供参考, 具体实用与否请君自测之.
2.3 Nginx 开启 Url Rewrite – 亲测可用
Nginx 只需要修改其配置文件 /etc/nginx/nginx.conf
, 在server
中添加 Rewrite 规则, 然后重启 Nginx 服务即可.
URL Rewrite的工作思路:
① 访问地址 https://healchow.com/articles/95.html;
② Nginx接收到请求后, 自动映射到https://healchow.com/?p=95;
③ 搜索引擎看到的是一个静态页面地址, 就不会对它进行降权, 而该页面文件实际上并不存, 这就是所谓的“伪静态”.
具体的重写规则参考: http://codex.wordpress.org/Nginx, 以及 Nginx中文文档-HttpRewrite模块 .
2.3.1 配置方式一(亲测可用)
在/etc/nginx/nginx.conf
文件中的 server
下配置如下信息:
location / {
try_files uriuri/ /index.php?$args ;
}
2.3.2 配置方式二(未测试)
location / {
if (-f request_filename/index.html){
rewrite (.*)1/index.html break;
}
if (-f request_filename/index.php){
rewrite (.*)1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
2.3.3 重启 Nginx 服务
修改完后, 重新加载配置文件, 并重启 Nginx 服务:
[root@onepiece ~]# vim /etc/nginx/nginx.conf
[root@onepiece ~]# service nginx reload
Redirecting to /bin/systemctl reload nginx.service
[root@onepiece ~]# service nginx restart
Redirecting to /bin/systemctl restart nginx.service
404错误应该不会再出现了, 赶紧试试吧:)
2.4 Apache 开启 Url Rewrite (未测试)
1) 开启 apache 的 url_rewrite 模块, 也就是在 httpd.conf 中注释掉这句话: LoadModule rewrite_module modules/mod_rewrite.so
;
2) 找到 AllowOverride, 把AllowOverride None
修改为 AllowOverride all
;
3) 在所需要进行 rewrite 的 Web 的主目录下添加.htaccess
文件, 添加内容: RewriteEngine on
.
3 优化WordPress固定链接的建议
1) 固定链接最好是在建站时就定好;
2) 如果后期变更固定链接一定要做好301跳转, 可以通过选择Redirection插件来解决;
关于301跳转, 参考配置如下:
server { listen 80; server_name healchow.com www.healchow.com; # 配置301重定向到https, 否则通过http仍能访问资源 return 301 https://healchow.com$request_uri; }
3) 固定链接本身并不能达到很科学的SEO效果, 各种方式的区别不大.
至此, 成功解决WordPress修改固定链接后的404问题.
参考资料
(全文完)
(感谢阅读, 转载请注明作者和出处 瘦风的南墙 , 请勿用于任何商业用途)