我在本地PC上使用xampp。 .htaccess文件放在/test/
文件夹中。我正在Chrome浏览器上测试地址 localhost/test
。
.htaccess文件是这样的:
RewriteEngine On
RewriteRule . http://google.com
重定向到Google。与此相同
RewriteEngine On
RewriteRule .. http://google.com
3点,4点,5点,6点,7点,8点,9点相同。
但是当有10个点或更多重定向时不起作用。所以这不做重定向(10点)
RewriteEngine On
RewriteRule .......... http://google.com
这样的.htaccess文件中的点实际意味着什么?他们是正则表达式吗?什么是10的神奇数字?
修改
我可能找到了原因。在localhost/test
的地址上打开的文件是index.php
。这个文件名长度实际上是9个字母。
所以九个或更少的点匹配它,但10个点不匹配。我认为这是安装。
EDIT2
点上还有一些神奇的东西。现在我已将.htaccess文件放到test2
的空目录中,并开始测试localhost/test2
的地址。
重定向最多可达13个点。对于14个点以上,没有重定向。混乱。
答案 0 :(得分:1)
您正在处理标准PCRE。点不是魔术,每个都意味着匹配任何角色'。它必须匹配路径组件中的13个字符(当前目录的尾随斜杠后面的所有内容)才能进行谷歌重定向,但不能匹配14.要查看它实际匹配的内容,请尝试使用此规则替换它:
RewriteRule .+ https://www.google.com/search?q=$0 [B,L,R]
您是否有先前的规则缺少L
标志,该标志告诉引擎停止寻找匹配项?
答案 1 :(得分:0)
根据Apache文档(https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule):
RewriteRule
的语法是RewriteRule Pattern Substitution [flags]
,其中Pattern
是“perl兼容的正则表达式”。这可以解释你观察到的行为!
答案 2 :(得分:0)
我刚刚在apache错误日志文件中找到了answear。即使目录中只有.htaccess文件,这个正则表达式的点与一些默认文件名匹配。在我的配置中,默认文件名是:
index.php
index.pl
index.cgi
index.asp
index.shtml
index.html
index.htm
default.php
default.pl
default.cgi
default.asp
default.shtml
匹配以default.shtml
文件名结尾,只有13个字母(13个点)。实际上,目录中不存在default.shtml
文件。然后开始重定向。