这个RewriteRule是否需要`^`和`$`锚点吗?

时间:2019-04-18 17:52:28

标签: .htaccess mod-rewrite

我在多个教程中都看过以下RewriteRule

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

我的问题与匹配模式有关:

  • ^(.*)$-匹配任何内容,但请确保“ anything”在行的开头和行尾。 ‍♂️
  • (.*)-匹配任何内容

^(.*)$匹配模式似乎不必要。 (.*)还不够吗?

(我已经以很难测试RewriteRules的方式学习了我的课程,所以我认为值得一提以确保我没有遗漏明显的东西)

1 个答案:

答案 0 :(得分:2)

由于您未在目标中使用^,因此不仅不需要$(.*),甚至不需要$1组。

您可以很好地将规则写为:

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

等效于:

RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]