apache - RewriteRule - 插入符号 ^ - 匹配

标签 apache mod-rewrite

我对这条规则感到困惑:

RewriteCond %{HTTPS} !=on

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

如果它是位置 anchor ,插入符号怎么可能匹配整个 URL?

我找不到任何官方声明说它是一个包罗万象的符号。

最佳答案

插入符号意味着查看一行的开头。

插入符在不消耗字符的情况下匹配开头。所以即使是空字符串也匹配 ^ .空字符串也匹配 ^$因为它从索引 0 开始,到索引 0 结束。

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

完全使用 ^因为正则表达式允许更高的性能,因为典型的正则表达式只比较 URL 的开头,因此不需要查看 URL 的每个字符。

关于apache - RewriteRule - 插入符号 ^ - 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41407202/

相关文章:

mod-rewrite - 只重定向父文件夹而不是子文件夹 .htaccess

java - 与 apache 网络服务器和 tomcat 服务器的粘性 session

php - 为什么 WAMP 中的 Apache 2.1.7 不会将 PHP 错误记录到 PHP 错误日志中?

php - 如何将所有子域重定向到http而不是https

apache - 使用 .htaccess 将所有 .php 请求重定向到 .html

.htaccess - htaccess 中的 https 和规则顺序(使用表达式引擎)

android - 无法在 Android 应用程序中 POST MultiPartEntity

apache - apache tomcat 日志中的 %D 和 %F 是什么?

PHP.ini 不会自动加载,即使它存在于配置位置

.htaccess - 为多个域重写为 www 和 https 并不总是有效