WP 02 – 优化WordPress的固定链接 – Nginx重写URL

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 $uri $uri/ /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问题.

参考资料

Nginx下wordpress伪静态的两种配置方式
WordPress固定链接设置完全指南及出现404的解决办法

(全文完)

瘦风的南
微信关注《瘦风的南墙》 在移动端阅读文章

(感谢阅读, 转载请注明作者和出处 瘦风的南墙 , 请勿用于任何商业用途)

——=== 访问 本站404页面 寻找遗失儿童 ===——

发表评论

你的个人信息不会被公开, 注意:标记为 * 的项必填。