【问题标题】:Nginx Joomla Internationalization URL rewritingNginx Joomla 国际化 URL 重写
【发布时间】:2012-06-05 14:49:41
【问题描述】:

我将 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/...

【问题讨论】:

    标签: joomla url-rewriting nginx multilingual


    【解决方案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;
        ...
    }
    

    【讨论】:

    • 嗨,谢谢你的帮助,但这似乎与我想要的相反。让我解释一下:当我在 URL 栏中输入 http://fr.example.com/test/test.html 时,我希望我的 Nginx 显示页面 http://www.example.com/fr/test/test.html。使用您的解决方案,似乎当我输入http://www.example.com/fr/test/test.html 时,我被重定向到不存在的http://fr.example.com/test/test.html。我必须为每种语言创建一个新的服务器声明吗?
    • 顺便问一下,(?&lt;lang&gt;) 代表什么?它是否将括号捕获的所有内容分配给变量$lang
    • 它是否将括号捕获的所有内容分配给变量 $lang? 是的。 (见man pcresyntax
    • 好的,我添加了相反的例子。是你想要的吗?
    • 从外观上看,它似乎做了我想要的,但是当我尝试它时它不起作用。我也有这个重写指令:location / { try_files $uri $uri/ /index.php?q=$uri&amp;$args; } 也许这是一个冲突的?
    猜你喜欢
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2013-09-28
    • 2013-03-09
    • 2011-11-25
    • 2017-03-24
    • 2012-10-15
    • 2014-05-14
    相关资源
    最近更新 更多