2016-07-21 8 views
0

私の元のURLを使って書き直して、次のようなもの:、私はそれを美化したいnginxのは - 最後のURLセグメント

http://example.com/lab/file.php?id=4&idl=42 

次のようなURLを介してもアクセスしやすく:

http://example.com/l/not/important/url/part/?id=4&idl=42 

私が試しました次のコードは動作しません。

rewrite /l/.*/([^/]+)/?$ /lab/file.php$1 last; 

解決方法は?

答えて

1

?の後の文字列はすべてクエリ文字列であり、rewriteディレクティブを使用して書き換えることはできません。ただし、既定では、rewriteは元のクエリ文字列をとにかに追加します。

あなたは、たとえば、/l/で始まるURIを書き直すか、/l/のための場所を作成することができ、次のいずれか

rewrite ^/l/ /lab/file.php last; 

かを:

location ^~ /l/ { 
    rewrite^/lab/file.php last; 
} 

^~修飾子は、このプレフィックスの場所がより優先されます作ります同じレベルの正規表現の場所。詳細は、this documentを参照してください。

どちらの場合も、rewriteは、元のクエリ文字列を書き換えられたURIに追加します。詳細は、this documentを参照してください。

関連する問題