2017-04-04 101 views
0

這是我在配置文件中的重寫規則。Nginx。重寫除一個路徑以外的所有請求

location/{ 
     rewrite ^/(.*)(?:\?(.*))?$ /mis/page/home last; 
     rewrite ^/login(\?.*)?$  /account/page/login$1 last; 

     try_files $uri $uri/ /index.php; 
     rewrite ^(.+)$ /index.php?_url=$1 last; 
    } 

我想重寫/login/account/page/login$1和所有其他請求/mis/page/home,然後所有請求應rewrited到index.php文件。

但是,這與上面的配置,我在error.log得到了來自服務器和錯誤消息500 Internal Error是:

rewrite or internal redirection cycle while processing "/mis/page/home" 

我如何能實現我的要求?

謝謝。

+0

你所需要的*所有其他*手段,因爲目前,'/ MIS /頁/ home'包括更好的主意在*所有其他*。重寫兩次的目的是什麼?你的意思是讓'/ mis/page/home'成爲一個重定向嗎? –

+0

我想要將所有請求重寫爲「/index.php?_url=」,並且我需要所有請求呈現除「/ login」之外的同一頁面。 – LCB

回答

0

我猜你試圖將/account/page/login$1/mis/page/home提供給你的/index.php?_url=?!因爲這是最後一次重寫的功能。這是一個全面的。

location/{ 
    rewrite ^/login(\?.*)?$  /account/page/login$1 last; 
    rewrite !^/login /mis/page/home last; 

    try_files $uri $uri/ /index.php; 
    rewrite ^(.+)$ /index.php?_url=$1 last; 
} 
0

你似乎是尋找您rewrite語句的正則表達式字面?,但nginx使用標準化 URI其被剝離的查詢字符串。有關詳細信息,請參閱this document

如果默認是使用/index.php_url=/mis/page/home參數,它可以直接在try_files語句構成的。

爲了保持事物分區,請爲/login URI使用單獨的位置塊。

也許我過於簡化您的要求,但是這是我的意思是:

location/{ 
    try_files $uri $uri/ /index.php?_url=/mis/page/home; 
} 
location = /login { 
    rewrite^/index.php?_url=/account/page/login last; 
} 
相關問題