0

我将 Joomla 与 Nginx 结合使用,我目前正在尝试为支持多种语言(意大利语、法语、中文和德语)的网站实现一些 URL 重写

网址在域名后有国家代码,如下所示:
http://www.example.com/fr/test/test.html

http://www.example.com/de/test/test.html

我正在寻找重写网址,所以国家代码是子域的一部分:
所以
http://www.example.com/fr/test/test.html
变成
http://fr.example.com/test/test.html

有没有办法通过 Nginx 实现这一点,或者我应该研究 Joomla 的第三方扩展(不是我最喜欢的选择)。

谢谢 !!

更新:
我不够清楚:我希望来自重写 URL 的重定向是透明的。这是我想出的,感谢VBart的帮助:

server {  
  server_name ~^(?<lang>.+)\.example\.com$;  
  location / {  
    rewrite /(.*)$ /$lang/$1 break;  
    proxy_pass http://www.example.com;  
    proxy_redirect http://www.example.com http://$lang.example.com/$request_uri;  
  }  
}  

现在,Nginx 有没有办法在提供的内容中动态修改链接?即:我希望生成页面中的所有链接看起来像http://fr...而不是http://.../fr/...

4

1 回答 1

1
server {
    server_name ~^(?<lang>.+)\.example\.com$;
    ...
}

server {
    server_name www.example.com;
    rewrite ^/(?<lang>[a-z]+)(?<rest>.+)$ http://$lang.example.com$rest? permanent;
}

相反的例子:

server {
    server_name ~^(?<lang>.+)\.example\.com$;
    return 301 http://www.example.com/$lang$request_uri;
}

server {
    server_name www.example.com;
    ...
}
于 2012-05-31T19:54:56.643 回答