解决Nginx环境WordPress或Typecho设置固定链接无法打开的问题
文章目录
[隐藏]
- 错误现象
- 解决办法
- 添加伪静态规则
- 开启PATHINFO
做网站搭博客,首选都是自己买个国外VPS,400+一年费用一般比国内的虚拟空间稍贵点,但相比买虚拟空间VPS好太多:
- 私有独享ip
- 足够多的存储空间:基本上都是10G起,要放什么文件都可以,数据库也可以随意多个
- 足够多的流量:一般都是500G起,相比虚拟主机的10G优越不是一点两点,几个朋友一起用都不是什么问题
- 最重要的是,境外VPS还有其他的用途:比如翻墙梯
当然,国外VPS也有个比不了的,那就是速度没有国内的虚拟主机快,但不需要备案啊!!!而且,就一个小网页,速度差别几乎感受不到。
错误现象
自己的VPS就需要自己维护了,就是一台远程的电脑,你自己能折腾出花来都行。自己不会折腾找卖家装好环境自己用就行。
一般搭网站用LNMP环境,对于静态网站,nginx默认设置就行,但对于WordPress或者Typecho这种动态站点,默认会出现设置带目录的链接时无法打开的情况。
http://xxx.com/blog/ http://xxx.com/2018/ http://xxx.com/%postname%.html
不加设置以上形式的链接都会出现404错误。
解决办法
不支持目录链接是因为缺少伪静态规则,我们只需要按以下方法添加伪静态即可。
添加伪静态规则
Nginx环境下WordPress或者Typecho伪静态规则如下:
location / { index index.html index.php; 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; } }
以上规则在nginx或者vhost配置中修改都可以。保存配置后,重启nginx一般就正常了。
开启PATHINFO
如果Typecho访问内页出现No input file specified错误提示,那么是没有开启pathinfo的支持。
方法:
找到/usr/local/php/etc/php.ini文件,将cgi.fix_pathinfo=0 改成 cgi.fix_pathinfo=1,保存后输入命令:service php-fpm重启php-fpm 即可。
原文出处:sobaigu -> http://sobaigu.com/nginx-path-index-with-wordpress-or-typecho.html