我有这个Nginx规则:
location /fr {
rewrite ^/(fr)(?:/([^/]+))?$ /$2?lang=$1 last;
}
我有以下页面:
example.com/en/some-page
example.com/fr/some-page
example.com/fr
...
但我也有一个以fr
开头的页面:
example.com/free-plan // doesn't work
example.com/fr/free-plan // doesn't work either
如何修改我的Nginx规则,以便/fr
规则不会干扰我的free-plan
页面?
Ps:我使用PHP和规则来服务页面而没有扩展名:
location / {
try_files $uri $uri.html $uri/ @extensionless-php;
}
location @extensionless-php {
rewrite ^(.*)$ $1.php last;
}
答案 0 :(得分:1)
我建议您将/fr
视为特殊情况,并使用location /fr/
来避免以fr
开头的网页产生副作用。
例如:
location = /fr {
rewrite ^/(.*)$ /?lang=$1 last;
}
location /fr/ {
...
}
有关详细信息,请参阅this document。