使用lnmp集成安装包时Nginx重写URL出现错误
2018-03-24 本文已影响56人
彩虹的夜晚
经验教训
都说是人不能被同一块石头绊倒2次,对于不记笔记的我来说,真的会被绊倒2次的,所以这次我就先记一下笔记,防止后面还是出现同样的错误。
安装环境
- Linux服务器安装CentOs操作系统
- 使用集成化的安装环境(lnmp一键安装包)
首先是在自己的服务器上安装了集成环境,安装步骤不详细介绍,具体查看安装步骤。
配置域名
安装完成之后,在Nginx服务器的配置文件中添加域名,即在/usr/local/nginx/conf/nginx.conf文件中编辑添加服务器配置信息,命令如下:
server {
listen 80 default_server;
#listen [::]:80 default_server ipv6only=on;
server_name 111.231.137.11;
index index.html index.htm index.php;
root /home/wwwroot/beibeiyu;
set $root /home/wwwroot/beibeiyu;
#error_page 404 /404.html;
#include enable-php.conf;
include enable-php-pathinfo.conf;
location /nginx_status
{
stub_status on;
access_log off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.
{
deny all;
#Require all granted;
}
location / {
root $root;
index index.html index.php;
if ( -f $request_filename) {
break;
}
if ( !-e $request_filename) {
rewrite ^(.*)$ /index.php/$1 last;
break;
}
}
location ~ .+\.php($|/) {
set $script $uri;
set $path_info "";
if ($uri ~ "^(.+\.php)(/.+)") {
set $script $1;
set $path_info $2;
}
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php?IF_REWRITE=1;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $script;
include fastcgi_params;
}
access_log /home/wwwlogs/access.log;
}
这个是配置域名,并配置了URL重写规则,而且是查询了很多资料之后得到的结果,但是在网站中访问的时候,却出现了开始访问的时候是没有问题的,但是在链接跳转了一次之后,重写URL的规则就不正确了,显示如下图:

这里我们可以看到显示是完全正常的,点击其他的关于我们之类的链接,显示也是正常的,如下图:

这个时候跳转也是成功,但是如果我们将光标移动到其他的a标签上就看到跳转链接显示不正常,如下图:

显示的链接结果为:http://home/Safety/Home/ProductFeatures/index.html,这个时候可以知道是重写的规则不正确,可是还是找不到对应的解决办法,最后找到了解决的办法:

解决的办法:
将php.ini配置文件中的cgi.fix_pathinfo=0的值修改为cgi.fix_pathinfo=1,之后保存退出,然后需要重启PHP,执行命令:
service php-fpm restart

