【问题标题】:Rewrite URL www.domain.com/ru_en/test/test to www.domain.com/ru/en/test/test将 URL www.domain.com/ru_en/test/test 重写为 www.domain.com/ru/en/test/test
【发布时间】:2019-08-03 00:54:17
【问题描述】:

在检测到 ru_ru 或 ru_en 或 cn_cn 或 cn_en 的情况下,我想通过将下划线 _ 替换为斜杠 / 来重写另一个 url

我正在使用 nginx,我想使用重写来定义规则或重写

www.domain.com/ru_en/test/test to www.domain.com/ru/en/test/test
www.domain.com/ru_ru/test/     to www.domain.com/ru/ru/test/
www.domain.com/cn_en/test/test to www.domain.com/cn/en/test/test
www.domain.com/cn_cn/go        to www.domain.com/cn/cn/go

重定向必须在不更改地址栏中的 URL 的情况下完成。

感谢您的帮助

【问题讨论】:

    标签: nginx url-rewriting


    【解决方案1】:

    你可以试试这个吗?

    rewrite ^/ru_en/(.*)$ http://$server_name/ru/en/$1 permanent; 
    rewrite ^/ru_ru/(.*)$ http://$server_name/ru/ru/$1 permanent; 
    rewrite ^/cn_en/(.*)$ http://$server_name/cn/en/$1 permanent; 
    rewrite ^/cn_cn/(.*)$ http://$server_name/cn/cn/$1 permanent; 
    

    编辑:添加 $server_name 而不是 URL。这将使其具有普遍性。

    【讨论】:

    • 它可以工作,但我不需要 example.com 在开始时也不需要更改地址栏中的 url。非常感谢。
    • 我不能使用 domain.com 因为 StackOverflow 不允许这样做。如果此答案对您有帮助,请将其标记为已解决(以便其他人在需要时可以参考)。
    • 可以删除 example.com 吗?我的意思是我想让它通用,所以它适用于所有域还需要在不更改地址栏上的 url 的情况下进行重定向
    • 我现在把它变成了通用的。它将从 nginx 服务器配置中获取服务器名称
    • 感谢@BrunoAFK 的帮助,最后一件事,可以在不更改地址栏上的 url 的情况下进行重定向吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    相关资源
    最近更新 更多