RewriteRule ^.*$ - [R=404,L] (URL書き換え処理) について


RewriteRule ^.*$ - [R=404,L]

◇◇◇◇にアクセスがあったら、◆◆◆◆に404Not Foundを行う処理。

ですが、

[code]

    ^は行頭、
    *は0回以上の繰り返し(最長一致数量子)、
    .は改行以外のあらゆる一文字を表す事ができ、
    $は行末
    
[/code]

RewriteRuleで使うフラグ

[code]

    R:指定したURLにリダイレクトする。【例】R=301で301リダイレクト(redirect)
    L:ここでURL書き換え処理を中止し、それ以降の書き換えはしないようにする(last)
    
[/code]

(1)この^.*$という表現は◇◇◇◇の部分に相当すると思いますが、どこにアクセスするのでしょうか。

(2)^.*$と[R=404,L]の間にある"-"は何を表しているのでしょうか。◆◆◆◆を表しているのでしょうか。

お手数おかけしますが、ご回答頂けると幸いです。

宜しくお願いします。




RewriteRuleの詳細は以下を参照してください。  
<https://httpd.apache.org/docs/2.4/rewrite/intro.html>  
<https://httpd.apache.org/docs/current/en/mod/mod_rewrite.html>

RewriteRuleのシンタックスは上記URLにもありますが、以下の通りです。

[code]

    RewriteRule Pattern Substitution [flags]
    
[/code]

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.
>

と定義されています。  
要するに何も置換を行わないということです。




>
[code]

>     RewriteRule ^.*$ - [R=404,L]
>  
[/code]

Webサーバーへアクセスがあったらパス部の内容に依らず常に `404 Not Found` のレスポンスを返す。

です。

