web-dev-qa-db-ja.com

Apache-mod_rewrite-後方参照の理解

httpdApacheサーバー-> mod_rewrite->後方参照

次の図は、括弧への参照を理解するためのものです([フラグ]は省略されています)。

mod_rewrite backreferences

括弧を使用すると、括弧内の内容にバックリンクが作成され、%1および$1を使用して条件のどこかで使用できます。

画像の出所は、httpd Apache2.2の非公式ドキュメントにあります。
https://publib.boulder.ibm.com/httpserv/manual70/rewrite/rewrite_intro.html#InternalBackRefs

Httpd Apache2.4の公式ドキュメントにはそのような図はありません。
https://httpd.Apache.org/docs/2.4/rewrite/intro.html#InternalBackRefs

この投稿の本質は、私がそれを正しく理解し、httpd Apache2.4で機能するかどうかを確認することです。

誰か知っていますか?

1
Ogi22

これは、Apache 1.3、2.2、または2.4を使用しているかどうかに関係なく、mod_rewriteがどのように機能するかの基本原則です。つまり、はい、Apache2.4でも同じように機能します。

(IBMの「コピー」(?)に基づいて投稿した図ですが、Apacheの「公式」ドキュメントではなく、RewriteCondディレクティブが処理される順序が明確でないため、おそらくあいまいです(青い矢印)。 -ダウンまたはボトムアップ?編集:これは後方参照のみを表すことを明確にしましたが、処理の順序ではありません。)

イメージの出所はhttpdApache2.2のドキュメントにあります
https://publib.boulder.ibm.com/httpserv/manual70/rewrite/rewrite_intro.html#InternalBackRefs

上記のように、これはApache2.2の「公式」ドキュメントではありません。 2.2の公式ドキュメント および Apache 2.4 には、同じ図が含まれています。これらの図と付随するテキストは、上記で概説したのと同じプロセスを説明しています。


IBMドキュメントの図(Apacheドキュメントの初期の「コピー」のように見え、非常に不完全です)には、次の図が含まれています。この図は、ベースになっているように見えます。

IBM diagram

その青い線(RewriteRulepatternからupに行く)はあいまいなIMOです-それは一番下の状態が最初ですか、それとも一番上ですか?その図を変更して、処理の順序をもう少し明確にします。例えば:

IBM diagram (revised)

1
MrWhite