2017-04-04 10 views
0

これは設定ファイルの書き換えルールです。Nginx。 1つのパスを除くすべてのリクエストの書き換え

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; 
    } 

私は/account/page/login$1/loginを書き換えたいと他のすべては/mis/page/homeに要求し、すべてのリクエストが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

あなたの/index.php?_url=/account/page/login$1または/mis/page/homeのいずれかを配信しようとしていますか?それが最後の書き換えがするものなのですから。それはキャッチオールです。

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; 
} 
関連する問題