Nginx的configuration位置正则expression式与语言代码在Url

尝试使用nginx正则expression式位置configuration实现url第一段中的常量语言代码,并找不到正确的语法。

必要的结果:

  • example.com 保持 example.com
  • example.com/zh 保持 example.com/en
  • example.com/en/ 保持 example.com/zh 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 ~ "^/(?![az]{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; } 

更新:答案可以在这个问题中find: https : //stackoverflow.com/a/33913261/2662849

@handler位置会将URI重写为/index.php ,然后redirect到/en/index.php ,如果它不存在,则调用@handler位置。

阅读这个文档是因为你需要一些东西来处理PHP。 redirect循环是由于文件或处理程序不存在而引起的。 您需要定义一个位置来处理PHP文件,或者是另一个正则expression式位置或者您指定的位置。