尝试使用 nginx 正则表达式位置配置在 url 的第一个段中实现常量语言代码,但找不到正确的语法。
必要结果:
- 示例.com停留示例.com
- example.com/en停留example.com/en
- example.com/en/停留example.com/en或者example.com/en/ (无所谓)
- example.com/en/etc停留example.com/en/etc
- example.com/etc更改为example.com/en/etc
- example.com/etc/segment更改为example.com/en/etc/segment
目前我已经找到了此代码,但它仍然卡在某个地方。它会产生永久循环,并且不使用 $1 参数。
location ~ "^/(?![a-z]{2}/)(.+)$" {
rewrite / /en/$1 permanent;
}
#Using handler here for removing index.php in uri (example.com/index.php -> example.com);
location / {
index index.htm index.html index.php;
try_files $uri $uri/ @handler;
}
location @handler {
rewrite / /index.php?$query_string;
}
更新:
答案可以在这个问题中找到:https://stackoverflow.com/a/33913261/2662849
答案1
该@handler
位置将重写 URI,/index.php
然后重定向到/en/index.php
,如果不存在则调用该@handler
位置。
读这个文件因为您需要一些东西来处理 PHP。重定向循环是由于文件或处理程序不存在而引起的。您需要定义一个位置来处理 PHP 文件,可以是另一个正则表达式位置或您命名的位置。