1

在网上我发现了几种定义 RewriteRule 的方法,例如:

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

但是为什么在输入垃圾网址时这些会起作用?因为第一个(.?)意味着应该有零个或一个字符会导致 404.php (不是一大堆字符或一个单词)。同样,.分别^只查找一个字符和一行的开头(不是带有几个字符或单词的行,对吗?)。这就是我基于 RegEx 帮助的想法。我错了吗?或者 ...?

4

2 回答 2

0

它们之所以有效,是因为它们可能与那个“垃圾 URL”相匹配。因为.?匹配零个或一个字符,.匹配单个字符,并且^只匹配字符串的开头(无论后面是什么)。

问题是,如何区分“垃圾”和“非垃圾”URL。

于 2011-02-22T11:57:39.007 回答
0

我还没有测试过,但我认为这绝对会将任何请求重定向到 404.php。

正则表达式.?将在 url 的任何位置搜索 0 或 1 个字符,任何字符。所以基本上,任何 url 都将匹配第一个正则表达式并重定向。

[L]尾的 使 mod-rewrite 在找到匹配项时不再处理任何规则。

于 2011-02-22T12:01:42.237 回答