使用lnmp集成安装包时Nginx重写URL出现错误

经验教训

都说是人不能被同一块石头绊倒2次,对于不记笔记的我来说,真的会被绊倒2次的,所以这次我就先记一下笔记,防止后面还是出现同样的错误。

安装环境

  1. Linux服务器安装CentOs操作系统
  2. 使用集成化的安装环境(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
解决之后显示正常
点击链接之后跳转正常
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,796评论 24 1,002
  • CGI 通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接...
    没我找不到电子书阅读 1,961评论 1 4
  • 蓝雨副队像猫儿,怕冷。 偏偏该死的南方城市没有暖气,二十几岁的大小伙子长手长脚也坚决要和队长挤在一个被窝里。 冰凉...
    叶介岫阅读 134评论 0 0
  • 2017.10.2日 奔波一天终于晚餐,原计划好的东南亚菜馆在这个时间档装修,只能临时转去别家领号排队。心里暗暗不...
    EmmaMeng阅读 364评论 0 0
  • 梦想这东西和经典一样,永远不会因为时间而褪色,反而更显珍贵。 — — —早安!
    地狱书生Jason_e73b阅读 129评论 0 0