ホームページ >バックエンド開発 >PHPチュートリアル >nginx 301 302ジャンプの設定方法と概要
転載元: http://blog.sina.com.cn/s/blog_5d73ba76010145rr.html
まず、nginx 301 302 Jump に関する完全なコード例を見てください。
301 ジャンプ設定:
server {
listen 80;
server_name 123.com;
rewrite ^/(.*) http://456.com/$1 Permanent;
access_log off;
}
302 Jump Transfer設定:
server {
listen 80;
server_name 123.com;
rewrite ^/(.*) http://456.com/$1 redirect;
access_log off;
}
nginx 301の詳細なドキュメントを参照してください。 302 Jump
server {
server_name test.com;
rewrite ^/(.*) http://www.test1.com/$1 Permanent;
}
last – 基本的にこの Flag を使用します。
break - Rewirteを中止し、マッチングを継続しません
redirect - 一時リダイレクトのHTTPステータス302を返します
permanent - 永続リダイレクトのHTTPステータス301を返します
NginxのリダイレクトはNginxのHttpRewriteModuleを使用しますので、使い方を簡単に説明します。 . メソッド:
rewrite コマンド
nginx の rewrite は、Apache の rewrite ルールと同等です (ほとんどの場合、元の Apache の rewrite ルールを引用符で囲んで直接使用できます) サーバー、ロケーション、および IF 条件判定ブロックで使用できます。
正規表現を書き換えてターゲットのフラグタグを置き換えます。
flagタグは次の形式を使用できます:
last – 基本的にこのFlagを使用します。
break - Rewirte を中止し、マッチングを継続しません
redirect - 一時的なリダイレクトの HTTP ステータス 302 を返します
permanent - 永続的なリダイレクトの HTTP ステータス 301 を返します
特記事項:
last と Break は、ブラウザの URL 書き換えを実装するために使用されますアドレス バーの URL アドレスは変更されませんが、サーバー側のアクセス パスは変更されています。
リダイレクトと永続は URL ジャンプの実装に使用され、ブラウザのアドレス バーにはジャンプ後の URL アドレスが表示されます。たとえば、次の Set nginx to redirect files under a specific directory to another directory $2 は、2 番目の括弧 (.*) 内の対応する文字列に対応します:
location /download/ {rewrite ^(/download/.*) / m/(.*)..*$ $1/nginx-rewrite/$2.gzbreak;
}
nginx リダイレクトの IF 条件判定
nginx の IF 条件判定はサーバーとロケーションの両方の状況で使用できます。以下:
正規表現
例:
一致判定
~* は大文字と小文字を区別しない一致です。 match Write 不一致
たとえば、次の設定 nginx は、ユーザーが ie を使用するときに /nginx-ie ディレクトリにリダイレクトします。
}
ファイルとディレクトリの判定
-fと!-fはファイルが存在するかどうかを判定します
-dと!-dはディレクトリが存在するかどうかを判定します
-eと!-eはファイルまたはディレクトリが存在するかどうかを判定します
-xと! -x ファイルが実行可能かどうかを判断します
たとえば、次の設定は、ファイルとディレクトリが存在しない場合に nginx をリダイレクトします:
if (!-e $request_filename) {
proxy_pass http://127.0.0.1;
}
return
http コードを返します。たとえば、nginx アンチホットリンクを設定します:
location ~* .(gif|jpg|png|swf|flv)$ {
valid_referers none block www.test.com www.test1.com;
if ( $invalid_referer) {
return 404