ホームページ > バックエンド開発 > PHPチュートリアル > Apache と nginx の違いに関する簡単な説明 rewrite_PHP チュートリアル

Apache と nginx の違いに関する簡単な説明 rewrite_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:13:07
オリジナル
742 人が閲覧しました

1. Nginx 書き換えルール関連の手順

Nginx Rewrite ルールに関連する命令には、if、rewrite、set、return、break などが含まれますが、その中で rewrite は最も重要な命令です。単純な Nginx Rewrite ルールの構文は次のとおりです:

^/b/(.*).html /play.php?video=$1 Break;を書き換えます

if ステートメントを追加する場合の例は次のとおりです:
if (!-f $request_filename)

{ ^/img/(.*)$ /site/$host/images/$1 最後に書き換えます }

2. Nginx と Apache の Rewrite ルールの例の比較

単純な Nginx と Apache の書き換えルールには大きな違いはなく、基本的に完全な互換性があります。


Apache 書き換えルール:

RewriteRule ^/(mianshi|xianjing)/$ /zl/index.php?name=$1 [L]

RewriteRule ^/ceshi/$ /zl/ceshi.php [L]

RewriteRule ^/(mianshi)_([a-zA-Z]+)/$ /zl/index.php?name=$1_$2 [L] RewriteRule ^/pingce([0-9]*)/$ / zl/pingce.php?id=$1 [L]

Nginx 書き換えルール:

^/(mianshi|xianjing)/$ /zl/index.php?name=$1 last;

を書き換えます

^/ceshi/$ /zl/ceshi.php を最後に書き換えます;

書き換え ^/(mianshi)_([a-zA-Z]+)/$ /zl/index.php?name=$1_$2 last;

^/pingce([0-9]*)/$ /zl/pingce.php?id=$1 last;

を書き換えます

Apache の書き換えルールを Nginx の書き換えルールに変更するのは非常に簡単です。ルールを変更した後、「nginx -t」コマンドを使用して、nginx.conf 設定ファイルに構文エラーがあることを確認します。次に、条件に引用符を追加してみてください。たとえば、次の Nginx Rewrite ルールは構文エラーを報告します:

^/([0-9]{5}).html$ /x.jsp?id=$1 最後に書き直すと、正しくなります:

「^/([0-9]{5}).html$」/x.jsp?id=$1 last;

を書き換えます

URL ジャンプ時の Apache と Nginx の書き換えルールには微妙な違いがあります:

Apache 書き換えルール:

RewriteRule ^/html/tagindex/([a-zA-Z]+)/.*$ /$1/ [R=301,L]
Nginx 書き換えルール:

^/html/tagindex/([a-zA-Z]+)/.*$ http://$host/$1/ Permanent;

を書き換えます


上記の例では、Nginx で必要な Nginx Rewrite ルールの置換文字列に「http://$host」が追加されていることがわかりました。

さらに、Apache と Nginx の Rewrite ルールは変数名も異なります。例:
Apache Rewrite ルール:

RewriteRule ^/user/login/$ /user/login.php?login=1&forward=http://%{HTTP_HOST} [L]

Nginx 書き換えルール:

^/user/login/$ /user/login.php?login=1&forward=http://$host last;
Apache と Nginx 間での同じまたは類似の機能を持つ一部の命令とタグ間の対応関係書き換えルール:
Apache のRewriteCond 命令は Nginx の if 命令に対応し、
Apache の RewriteRule 命令は Nginx のリダイレクト タグに対応し、
Apache の [P] タグは Nginx の最後のタグに対応します。 ] マークは Nginx のリダイレクト マークに対応し、
Apache の [P,L] マークは Nginx の最後のマークに対応します。
指定されたドメイン名はこのサイトへのアクセスを許可され、他のドメイン名は http://www.aaa.com にジャンプします:

Apache 書き換えルール:


RewriteCond %{HTTP_HOST} ^(.*?).domain.com$

RewriteCond %{HTTP_HOST} !^qita.domain.com$ RewriteCond %{DOCUMENT_ROOT}/market/%1/index.htm -f

RewriteRule ^/wu/$ /market/%1/index.htm [L]

Nginx の if 命令はネストをサポートしておらず、AND や OR などの複数条件の一致もサポートしていないようです。Apache の RewriteCond と比較すると、面倒ですが、次のページで Nginx 構成を記述することでこの例を実装できます:

Nginx 書き換えルール:



if ($host ~* ^(.*?).domain.com$)

{

$var_wupin_city $1 を設定します

$var_wupin '1' を設定します

}

if ($host ~* ^qita.domain.com$)

{

$var_wupin ‘0’ を設定します

}

if (!-f $document_root/market/$var_wupin_city/index.htm)

{

$var_wupin ‘0’ を設定します

}

if($var_wupin ~ ‘1’)

{

^/wu/$ /market/$var_wupin_city/index.htm を最後に書き換えます

}

http://www.bkjia.com/PHPjc/326583.html

www.bkjia.com

http://www.bkjia.com/PHPjc/326583.html技術記事 1. Nginx Rewrite ルール関連の命令 Nginx Rewrite ルール関連の命令には、if、rewrite、set、return、break などが含まれますが、その中で rewrite が最も重要な命令です。単純な Nginx 書き換えルール...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート