插件与教程

wordpress 固定链接 %postname% 和 pathinfo 的冲突

authorCrazy uncle publish2021-05-28 update2022-09-09 view746

主要冲突表现在,在访问wordpress的正常页面、分类、文章时,都正常访问,正常显示,而当你访问一个不存在的url时,你的站点不会显示到404页面,而是显示的首页;

可能大家听起来会很模糊,没明白过来是啥意思;

例如:访问 https://www.huitheme.com/theme 可以访问,因为这个页面真实存在,所以没有问题;而当访问到 https://www.huitheme.com/gerg2gfw 时,此url是不存在的,访问到不存在的url时应该显示404页面或者直接nginx提示404错误,但我最近遇到的情况却是,访问不存在的url时,显示的是首页;

这在某些人眼里是好事,他们会觉得这样用户不会被跳出,始终停留在网站内,这是表面的优点,但隐藏的缺点就是,百度会收录一堆不存在的url以展示是你的首页,以导致,百度认为你有若干个首页,从而对你的站点进行降权。

排查思路:

  • 首先,排查问题的第一步,就是先排查主题的原因,换了主题,问题依旧;
  • 其次,如果有插件就插件全停,我没用任何插件,所以插件因素自动无;
  • 再其次就是 通过 固定链接,设置其他的,是否问题依然存在,得到的结论是 设置其他的形式问题消失,唯独设置/%postname%.html 这个形式,会产生问题;
  • 那么,可以确定还是伪静态的问题,于是,先从服务器的伪静态入手,服务器我是nginx,一般2个文件,一个是nginx.conf 这个文件,我基本没自己改过,都是默认;
  • 所以,就从我站点的 ***.conf 配置文件入手,先一行一行的排除,当我删除到 php-pathinfo.conf的时候,发现,问题解决了,所以,我就研究了一下 pathinfo 是干嘛用的,

百度了一下,得到的答案是:只有极少数程序使用pathinfo,如基于CI框架的程序。常见的wordpress、discuz x等都不需要开启!!!不需要pathinfo的网站程序开启pathinfo会访问出现各种问题。

如此不起眼的冲突,谁能想起是当初在配置服务器添加网站时勾选了pathinfo造成的呢?甚至有很多人当初添加网站的时候也勾选了pathinfo,但没有采用%postname%的固定链接的形式,所以也感知不到问题存在。

解决方法:

一,要么重新添加一下站点,在配置pathinfo的时候,选择 n

二,服务器目录 /usr/local/nginx/conf/vhost/***.conf 找到你的站点配置文件;

将里面的include enable-php-pathinfo.conf;修改为 include enable-php.conf;

如果配置了ssl,会有2个enable-php-pathinfo.conf,都要修改;

最后重启一下服务器或重启nginx即可。

有用(6)

这些你同样感兴趣

满足你在每个阶段使用模板的需求,帮助你高效完成工作及任务