Apache和Nginx伪静态规则不一致导致页面404
博客由hawkhost搬家至DigitalOcean系列文章:
6.将wordpress和数据库搬到DigitalOcean
域名解析设置完成后,我发现小站只有首页可访问,其他页面均为404。经过确认,Apache和Nginx伪静态规则不一致导致页面404。Apache下,伪静态规则写在网站根目录的.htaccess文件中,而Nginx不识别.htaccess文件,导致伪静态无效而出现404。
这里再说明一下本站的案例:小站由hawkhost共享虚拟主机搬迁到DigitalOcean,在DigitalOcean中安装了lnmp1.2,php/mysql/nginx等安装的均为lnmp1.2一键安装包中的默认版本。配置虚拟主机完成,将wordpress和数据库转移到虚拟主机,DNS解析完成后出现首页可访问,其他页面404的状况。
本站采用如下方案可以解决该404错误:
在文件/usr/local/nginx/conf/vhost/livezingy.com.conf”下的Server{}字段中“root /home/wwwroot/new”的下面添加代码,内容如下:
1 2 3 4 5 6 7 8 9 |
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; } |
保存后,通过Putty输入 /etc/init.d/nginx restart , 重启nginx后,再次访问网站即全部恢复正常。
lnmp官网中建议的伪静态管理方案
lnmp官网中也有提到伪静态管理方案,不过这种方案我并未尝试,在这里记录下来备用。
在文件/usr/local/nginx/conf/vhost/livezingy.com.conf”下的Server{}字段中“root /home/wwwroot/new”的下面添加代码:
include wordpress.conf;
上面的wordpress.conf为伪静态文件,如需要其他伪静态文件自己创建个并上传到/usr/local/nginx/conf/ 下面并include 伪静态.conf; 加完保存,执行:/etc/init.d/nginx restart 重启生效,如果报错可能是添加有误或伪静态规则有误。