質問: RewriteRule ^.*$ - [R=404,L] ◇◇◇◇にアクセスがあったら、◆◆◆◆に404Not Foundを行う処理。 ですが、 ``` ^は行頭、 *は0回以上の繰り返し(最長一致数量子)、 .は改行以外のあらゆる一文字を表す事ができ、 $は行末 ``` RewriteRuleで使うフラグ ``` R:指定したURLにリダイレクトする。【例】R=301で301リダイレクト(redirect) L:ここでURL書き換え処理を中止し、それ以降の書き換えはしないようにする(last) ``` (1)この^.*$という表現は◇◇◇◇の部分に相当すると思いますが、どこにアクセスするのでしょうか。 (2)^.*$と[R=404,L]の間にある"-"は何を表しているのでしょうか。◆◆◆◆を表しているのでしょうか。 お手数おかけしますが、ご回答頂けると幸いです。 宜しくお願いします。
回答: RewriteRuleの詳細は以下を参照してください。 RewriteRuleのシンタックスは上記URLにもありますが、以下の通りです。 ``` RewriteRule Pattern Substitution [flags] ``` RewriteRuleはリクエストされてきたURLがpatternにマッチしたとき、Substitutionに従ってリクエストされたURLを書き換え、再度サーバーにURLを解釈させます。 この時、パターンAをBに書き換えるルールと、パターンBをAに書き換えるというルールを同時に作ってしまうとループして500エラーが発生します。 > > (1)この^.*$という表現は◇◇◇◇の部分に相当すると思いますが、どこにアクセスするのでしょうか。 > > > リクエストされたパス全体を示しています。 > > (2)^.*$と[R=404,L]の間にある"-"は何を表しているのでしょうか。◆◆◆◆を表しているのでしょうか。 > > > これは私も理解せずに使っていたのですが、上記URL内で > > * (dash) A dash indicates that no substitution should be performed (the existing path is passed through untouched). This is used when a > > flag (see below) needs to be applied without changing the path. > > > と定義されています。 要するに何も置換を行わないということです。