NGINX Redirect место для матча - PullRequest
       1

NGINX Redirect место для матча

0 голосов
/ 10 ноября 2018

У меня есть сайт с большим количеством маршрутов (Laravel 5.7)

Пара таких маршрутов

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

Мне нужно указать установку WordPress на

"/insurance-travel" 

Я сделал с местоположением NGINX, но у меня есть эта проблема:

Когда я пишу "/insurance-travel" в URL, все в порядке, но когда я пишу /insurance-travel-landing или /insurance-travel-anual, я получаю 404 ошибку WordPress.

Я пытался сделать местоположение с точным соответствием ("location = / insurance-travel") но у меня проблема с расположением php.

My Nginx Config (работает страхование путешествий, но остальные не работают)

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;
              }


    }

Мой конфиг, когда я помещаю = в местоположение

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, скажи мне это

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

Как я могу это исправить?

Спасибо!

Edit:

Серверный блок

server {
server_name xx.xx.xx;
listen 443 ssl http2;

ssl_certificate /etc/letsencrypt/live/xx/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xx/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/xx/fullchain.pem;
include /etc/nginx/snippets/ssl.conf;

root "/var/www/html/xx/current/public";
index index.php index.html;
location / { 
     try_files $uri $uri/ /index.php?$query_string;
}
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;
          }

    }
sendfile off;

    client_max_body_size 100m;

    location ~ \.php$ {
           fastcgi_split_path_info ^(.+\.php)(/.+)$;
           fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
           fastcgi_index index.php;
           include fastcgi_params;
           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
           fastcgi_intercept_errors off;
           fastcgi_buffer_size 16k;
           fastcgi_buffers 4 16k;
           fastcgi_connect_timeout 300;
       fastcgi_send_timeout 300;
               fastcgi_read_timeout 300;
    }

 }

1 Ответ

0 голосов
/ 10 ноября 2018

Итак, вы хотите, чтобы /insurance-travel получил доступ к WordPress, но /insurance-travel-xxx продолжит обрабатываться Laravel.

Вы можете настроить местоположение таким образом, чтобы WordPress обрабатывал любой URI, начинающийся с /insurance-travel/, и добавить явное правило для одного 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...