V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
ab
V2EX  ›  NGINX

nginx 重写规则求助

  •  
  •   ab · 2015-04-16 22:24:28 +08:00 · 3535 次点击
    这是一个创建于 3510 天前的主题,其中的信息可能已经有所发展或是发生改变。
    wordpress的一些tag原来为中文,当改为英文时,需要做一些重定向.


    比如 原tag网址 为 abc.com/tag/中国 现在修改为 abc.com/tag/china

    这样的规则该怎么弄,试了半天都没有成功
    9 条回复    2015-05-28 20:38:22 +08:00
    yangqi
        1
    yangqi  
       2015-04-16 22:26:05 +08:00
    这种只能在应用里面设置,nginx又不带翻译,除非你把所有的全部列出来
    ryd994
        2
    ryd994  
       2015-04-16 22:43:23 +08:00 via Android   ❤️ 1
    可以用map
    map $tagold $tagnew {
    default 404;
    %E4%B8%AD%E5%9B%BD china;
    %E7%BE%8E%E5%9B%BD usa;
    ………
    }
    server{
    location ~/tag/(?<tagold>.*){
    return 301 /tag/$tagnew;
    }
    }

    大约就这样,如果不行的话贴一下errorlog看看
    map左边那一串是中文字符的转义,你可以直接搜索某个中文词,然后把地址栏里的url复制到记事本里查看
    ab
        3
    ab  
    OP
       2015-04-17 00:20:36 +08:00 via iPhone
    @ryd994 哇,谢谢
    richardhc
        4
    richardhc  
       2015-04-17 09:13:46 +08:00
    @ryd994 map功能好强大!~ 以前还是一条一条写rewrite...
    ryd994
        5
    ryd994  
       2015-04-17 10:39:41 +08:00 via Android
    @richardhc 没有特别需求的话其实建议少用rewrite模块,特别是if is evil。性能会比较好
    tianchaijz
        6
    tianchaijz  
       2015-04-17 20:47:24 +08:00
    其实用 ngx_lua 模块,一小段 Lua 代码就能解决
    richardhc
        7
    richardhc  
       2015-04-19 11:14:27 +08:00
    @ryd994 受教了~
    @tianchaijz ngx_lua也很牛。。。不知道和上面说的map相比,性能咋样。
    ab
        8
    ab  
    OP
       2015-05-28 13:50:49 +08:00
    @ryd994 无效,无限重定向,可否给一个联系方式?
    ryd994
        9
    ryd994  
       2015-05-28 20:38:22 +08:00 via Android
    @ab 一灵二溜四叁期午叁午
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5044 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:48 · PVG 17:48 · LAX 01:48 · JFK 04:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.