在网上我找到了几种定义RewriteRule的方法,如:
RewriteRule .? 404.php [L]
RewriteRule . 404.php [L]
RewriteRule ^ 404.php [L]
但是为什么这些在输入垃圾网址时会起作用?因为第一个(.?)
意味着应该有零个或一个char,这将导致404.php(不是一堆字符或一个单词)。同样地,.
和^
分别只查找一个字符和一行的开头(不是一行有几个字符或单词,对吧?)。这就是我基于RegEx帮助的想法。我错了吗?或者......?
答案 0 :(得分:0)
他们的工作原因是他们可能匹配“垃圾网址”。由于.?
匹配零个或一个字符,.
匹配单个字符,^
只匹配字符串的开头(无论如何)。
问题是,您如何区分“垃圾”和“非垃圾”网址。
答案 1 :(得分:0)
我没有测试过,但我认为这会将任何请求重定向到404.php。
正则表达式.?
将在网址的任意位置搜索0或1个字符,即任何字符。所以基本上,任何网址都会匹配第一个正则表达式并重定向。
该行末尾的[L]
使mod-rewrite在发现匹配时不再处理任何规则。