2012-07-20 44 views
1

假設你有一個網址www.answers.mydomain.com/category/hello_world-123.html,但你要重寫的路徑部分爲/分類/你好世界Nginx在重寫中替換字符?

你怎麼會去與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; 
     } 
    } 

 

回答

2
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; 
} 
+0

哈哈再度回到:-)好了,所以我有點想通這一點,但也沒辦法做到這是遞歸的?沒關係,如果不是的話,我只會找出我的slu maximum的最大長度。 – 2012-07-20 22:14:26

+0

使用標準指令似乎沒有辦法。作爲替代方案,您可以使用[embedded perl](http://nginx.org/en/docs/http/ngx_http_perl_module.html)或[lua](http://wiki.nginx.org/HttpLuaModule)模塊。 – VBart 2012-07-20 22:36:16

+0

在這裏看到我的答案http://stackoverflow.com/questions/15912191/how-to-replace-underscore-to-dash-with-nginx/15934256#15934256更有效的一組字符替換重寫規則。 – Tobia 2013-04-10 19:04:34