【发布时间】:2021-03-15 14:02:18
【问题描述】:
我正在尝试进行以下重写:
maindomain.com/country/everythingExceptWork 重定向到国家/地区网址
location ~ ^/france(?:/(?!work))(?:(.*))$ {
return 301 https://www.maindomain.com/fr/france/;
}
maindomain.com/anycountry/works 重定向到单个 url
location ~ ^/(spain|italy|france)/work$ {
return 301 https://www.maindomain.com/en/works/;
}
问题是,当我测试 maindomain.com/country/ 时它可以工作,但如果我测试它 maindomain.com/country(没有最后一个斜杠),它将使用默认规则,这个问题在我更改时开始:
this: location ~ ^/spain(?:/(.*))?$ {
for this: location ~ ^/spain(?:/(?!work))(?:(.*))$ {
NGINX 配置:
server {
listen 80;
server_name maindomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name maindomain.com;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
#reverse proxy
#Default
location / {
return 301 https://www.maindomain.com;
}
#Work ALL COUNTRIES
location ~ ^/(spain|italy|france)/work$ {
return 301 https://www.maindomain.com/en/works/;
}
#France
location ~ ^/france(?:/(?!work))(?:(.*))$ {
return 301 https://www.maindomain.com/fr/france/;
}
#Spain
location ~ ^/spain(?:/(?!work))(?:(.*))$ {
return 301 https://www.maindomain.com/es/spain/;
}
#Italy
location ~ ^/italy(?:/(?!work))(?:(.*))$ {
return 301 https://www.maindomain.com/en/italy/;
}
}
我在此更改中缺少什么以包含带或不带斜线的国家/地区?
this: location ~ ^/spain(?:/(.*))?$ {
for this: location ~ ^/spain(?:/(?!work))(?:(.*))$ {
提前致谢!
【问题讨论】:
标签: regex nginx url-rewriting