NGINX重定向匹配位置

时间:2018-11-10 09:50:47

标签: laravel nginx

我有一个路线很多的站点(Laravel 5.7)

其中一些路线是

addValueEventListener

我需要将WordPress安装指向

"/insurance-travel-landing"  
"/insurance-travel-anual"

我在NGINX位置上做过,但是我有这个问题:

当我在URL中写"/insurance-travel" 时可以正常工作,但是当我写"/insurance-travel"/insurance-travel-landing时,我会收到404错误的WordPress。

我尝试过完全匹配的位置(“位置= /保险旅行”) 但我对php位置有疑问。

我的Nginx配置(可以进行保险旅行,但是其他旅行无效)

/insurance-travel-anual

当我将=放在位置时的配置

location = /insurance-travel {
             alias /var/www/html/landing-travel;
             index index.php;
             if (!-e $request_filename) { rewrite   /insurance-travel/index.php last; }
                    location ~ \.php$ {
                    if (!-f $request_filename) { return 404; }
                    fastcgi_pass unix:/run/php/php7.1-fpm.sock;

                    include /etc/nginx/fastcgi_params;
                    fastcgi_param  SCRIPT_FILENAME $request_filename;
              }


    }

Nginx告诉我这个

location = /insurance-travel {
             alias /var/www/html/landing-travel;
             index index.php;
             if (!-e $request_filename) { rewrite   /insurance-travel/index.php last; }
                    location ~ \.php$ {
                    if (!-f $request_filename) { return 404; }
                    fastcgi_pass unix:/run/php/php7.1-fpm.sock;

                    include /etc/nginx/fastcgi_params;
                    fastcgi_param  SCRIPT_FILENAME $request_filename;
              }


    }

我该如何解决?

谢谢!

编辑:

服务器块

nginx: [emerg] location "\.php$" cannot be inside the exact location "/insurance-travel".

1 个答案:

答案 0 :(得分:1)

因此,您希望/insurance-travel访问WordPress,但希望/insurance-travel-xxx继续由Laravel处理。

您可以设置位置,以便WordPress处理以/insurance-travel/开头的所有URI,并为单个URI /insurance-travel添加一个显式规则。

例如:

location = /insurance-travel {
    rewrite ^ /insurance-travel/ last;
}
location ^~ /insurance-travel/ {
    alias /var/www/html/landing-travel/;
    index index.php;
    if (!-e $request_filename) { rewrite ^ /insurance-travel/index.php last; }

    location ~ \.php$ {
        if (!-f $request_filename) { return 404; }
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;

        include /etc/nginx/fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME $request_filename;
    }
}
相关问题