nginx定位规则干扰
nginx location rule interference
我有这个 Nginx 规则:
location /fr {
rewrite ^/(fr)(?:/([^/]+))?$ /?lang= 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 ^(.*)$ .php last;
}
我建议您将 /fr
视为特例并使用 location /fr/
以避免以 fr
.
开头的页面产生副作用
例如:
location = /fr {
rewrite ^/(.*)$ /?lang= last;
}
location /fr/ {
...
}
详情见this document。
我有这个 Nginx 规则:
location /fr {
rewrite ^/(fr)(?:/([^/]+))?$ /?lang= 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 ^(.*)$ .php last;
}
我建议您将 /fr
视为特例并使用 location /fr/
以避免以 fr
.
例如:
location = /fr {
rewrite ^/(.*)$ /?lang= last;
}
location /fr/ {
...
}
详情见this document。