1. 程式人生 > >Nginx 一些常用的URL 重寫方法

Nginx 一些常用的URL 重寫方法

url重寫應該不陌生,不管是SEO URL 偽靜態的需要,還是在非常流行的wordpress裡,重寫無處不在。

1. Apache 的寫法

RewriteCond  %{HTTP_HOST}  nginx.org
RewriteRule  (.*)  http://www.nginx.org$1



Nginx 可以對應寫成:

server {
    listen       80;
    server_name  www.nginx.org  nginx.org;
    if ($http_host = nginx.org) {
        rewrite  (.*)  http://www.nginx.org$1;
    }
    ...
}


Nginx 作者更建議的方法是:

server {
    listen       80;
    server_name  nginx.org;
    rewrite   ^  http://www.nginx.org$request_uri?;
}

server {
    listen       80;
    server_name  www.nginx.org;
    ...
}

F&Q

1. 請教一下,nginxrewrite規則怎麼寫?

比如將 http://http://www.oschina.net/222.html rewrite http://http://www.oschina.net/222.htm

location ~ .*\.(html)$

          {

           rewrite ^(.*)\.html  $1.htm permanent;

         }

2. 下面url要怎麼寫rewrite?

www.aaa.com/search/?wd=搜尋內容  ==> www.aaa.com/searchpage?keyword=搜尋內容


location ~ ^/search/ { 

            rewrite (.*) /searchpage$1 ; 

3. 請求的url如下 /item/12345/index.html 重定向到/item/12/12345/index.html

規則就是id1000,如果小於id小於1000,則為/item/0/id/index.html

不知道說清楚沒有,這個rewrite規則該怎麼寫啊?


剛看了文件,似乎可以

http://wiki.nginx.org/HttpRewriteModule

/photos/123456  -> /path/to/photos/12/1234/123456.png

rewrite  "/photos/([0-9] {2})([0-9] {2})([0-9] {2})" /path/to/photos/$1/$1$2/$1$2$3.png;

備註:

有一個工具是apache htaccess 檔案轉 nginx rewrite: