【问题标题】:Nginx Replace Characters in rewrite?Nginx替换字符重写?
【发布时间】:2012-07-21 05:56:45
【问题描述】:

假设您有一个网址 www.answers.mydomain.com/category/hello_world-123.html 但您想将路径部分重写为 /category/hello-world

你会如何通过 nginx 重写来解决这个问题?基本上如何格式化 $1 变量?

server{ listen 80; server_name ~^(?<subdomain>.+)\.bg\.com$ root /home/dan/Projects/rewrite-example; set $PREFERRED_DOMAIN $scheme://www.bg.com; if ($subdomain ~* answers) { rewrite ^(.*)$ $PREFERRED_DOMAIN/questions$1 permanent; } }

【问题讨论】:

    标签: nginx rewrite


    【解决方案1】:
     server{
         listen 80;
         server_name  answers.bg.com;
    
         rewrite ^(.+/[a-z]+)-\d+\.html$ http://www.bg.com$1 permanent;
         rewrite ^(.+/[a-z]+)_([a-z]+)-\d+\.html$ http://www.bg.com$1-$2 permanent;
         rewrite ^(.+/[a-z]+)_([a-z]+)_([a-z]+)-\d+\.html$
                 http://www.bg.com$1-$2-$3 permanent;
         rewrite ^(.+/[a-z]+)_([a-z]+)_([a-z]+)_([a-z]+)-\d+\.html$
                 http://www.bg.com$1-$2-$3-$4 permanent;
         rewrite ^(.+/[a-z]+)_([a-z]+)_([a-z]+)_([a-z]+)_([a-z]+)-\d+\.html$
                 http://www.bg.com$1-$2-$3-$4-$5 permanent;
     }
    

    【讨论】:

    • 哈哈 又回来了 :-) 好的,所以我有点想通了,但是没有办法递归地做到这一点?如果没有也没关系,我会弄清楚我的蛞蝓的最大长度。
    • 使用标准指令似乎没有办法。作为替代方案,您可以使用 embedded perllua 模块。
    • 在这里查看我的答案stackoverflow.com/questions/15912191/… 以获得更有效的字符替换重写规则集。
    猜你喜欢
    • 1970-01-01
    • 2011-10-13
    • 2016-01-31
    • 2019-01-03
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多