Regex .htaccess:What';这两者之间的区别是什么;重写规则^-";及;重写规则^(.*)$/$1;?

Regex .htaccess:What';这两者之间的区别是什么;重写规则^-";及;重写规则^(.*)$/$1;?,regex,apache,.htaccess,redirect,mod-rewrite,Regex,Apache,.htaccess,Redirect,Mod Rewrite,我一辈子都无法弄清楚这两个项目之间的区别,但即使在我当前的使用中,它们都解析为相同的URL,第一个成功解析,但第二个给出了403错误 RewriteRule ^ - [S=1] RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [S=1] 假设它们解析为相同的URL,这两者之间有什么区别 (根据,它们都解析为完全相同的URL。) 此规则将导致重定向循环,因为它只是重定向到自身,没有任何条件或模式匹配。即使此规则中没有R标志,但由于在目标中使用了绝对URL,

我一辈子都无法弄清楚这两个项目之间的区别,但即使在我当前的使用中,它们都解析为相同的URL,第一个成功解析,但第二个给出了403错误

RewriteRule ^ - [S=1]

RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1  [S=1]
假设它们解析为相同的URL,这两者之间有什么区别

(根据,它们都解析为完全相同的URL。)

此规则将导致重定向循环,因为它只是重定向到自身,没有任何条件或模式匹配。即使此规则中没有
R
标志,但由于在目标中使用了绝对URL,将
R=302
发送回客户端



此规则意味着什么也不做(不采取行动)并跳过此规则下方的一条规则。

我不想做任何事情。您是说
http://%{http_HOST}/$1
不会做任何事情,而是会触发302重定向,而不会继续.htaccess?这就是为什么
http://%{http_HOST}/$1
返回403错误的原因吗?403很可能是由.htaccess或服务器配置中的另一个指令引起的,但正确的方法是
RewriteRule^-
403很可能是由.htaccess
中的另一个指令引起的。我肯定是的,尽管我找不到。然而,让我困惑的是,在我当前的用例中,
^-
http://{http_HOST}/$1
输出完全相同的URL,但其中一个触发403,另一个不触发……如果我正确理解您所说的,
^-
由我的index.php处理,但是
http://{http_HOST}/$1可能会得到一个302重定向,而不是由index.php处理,这就是为什么即使它们有完全相同的URL,它们的行为也不一样。这有意义吗,还是我完全偏离了底线?是的,这完全有意义,你解释得很好
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1  [S=1]
RewriteRule ^ - [S=1]