1

ネット上で、次のような RewriteRule を定義するいくつかの方法を見つけました。

RewriteRule .? 404.php [L]
RewriteRule . 404.php [L]
RewriteRule ^ 404.php [L]

しかし、なぜこれらがガベージ URL を入力するときに機能するのでしょうか? 最初の(.?)意味は、404.php につながるゼロまたは 1 つの文字が存在する必要があることを意味するためです (一連の文字や単語ではありません)。同様に、それぞれ char と行頭のみ.^探します (数文字または単語を含む行ではありませんよね?)。それがRegExのヘルプに基づいて私が考えるものです。私が間違っている?または ...?

4

2 に答える 2

0

それらはおそらくその「ガベージ URL」と一致するため機能します。.?0 個または 1 個の文字に.一致し、 1 文字に一致し、文字列の先頭のみに一致するため^(その後に何が続くかに関係なく)。

むしろ問題は、「ガベージ」URL と「ガベージでない」URL をどのように区別するかです。

于 2011-02-22T11:57:39.007 に答える
0

テストはしていませんが、これにより、すべてのリクエストが 404.php に完全にリダイレクトされると思います。

正規表現.?は、URL の任意の位置で 0 または 1 文字、任意の文字を検索します。したがって、基本的に、どの URL も最初の正規表現に一致し、リダイレクトされます。

[L]行末の により、一致が見つかった場合にそれ以上ルールを処理しないように mod-rewrite が作成されます。

于 2011-02-22T12:01:42.237 に答える