RewriteRule - Caret ^ - 匹配

时间:2016-12-31 09:47:14

标签: apache mod-rewrite

我对此规则感到困惑:

RewriteCond %{HTTPS} !=on

RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]

如果插入符号是位置锚点,那么插入符号如何匹配整个URL?

我找不到任何正式声明它是一个全部符号。

1 个答案:

答案 0 :(得分:3)

插入符号表示查看行的开头

插入符号在开头匹配而不消耗角色。所以即使空字符串匹配^。空字符串也匹配^$,因为它从索引0开始,到索引0结束。

插入符号匹配,因为正则表达式只需要在URL中找到。它不需要匹配整个URL。

使用正则^作为正则表达式可以提高性能,因为典型的正则表达式只比较URL的开头,因此不需要查看URL的每个字符。