我有一个网站有很多路线(Laravel 5.7(
其中有几条路线是
"/insurance-travel-landing"
"/insurance-travel-anual"
我需要指向的WordPress安装
"/insurance-travel"
我使用了NGINX定位,但我有这个问题:
当我在URL中写"/insurance-travel"
时,工作正常,但当我写/insurance-travel-landing
或/insurance-travel-anual
时,我收到WordPress的404错误。
我试着做了一个完全匹配的位置("位置=/保险旅行"(但我对php的位置有问题。
我的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;
}
}
当我把=放在位置时的配置
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".
我该怎么解决这个问题?
谢谢!
编辑:
服务器块
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;
}
}
所以您希望/insurance-travel
访问WordPress,但/insurance-travel-xxx
继续由Laravel处理。
您可以设置一个位置,以便任何以/insurance-travel/
开头的URI都由WordPress处理,并添加一个显式规则,即单个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;
}
}