Htaccess RewriteCond Expr 未执行

Htaccess RewriteCond Expr not executing

根据 Amazon's Lightsail Troubleshooting 我正在尝试更新我的 htaccess 以在 HTTPS 重定向期间忽略特定文件。但是,它似乎并没有忽略它。

我想要发生的是,如果用户访问 http://example.com/health-checker.html,他们不会被重定向到 HTTPs 版本。但是,如果他们访问任何其他内容,他们将被重定向到 HTTPs 版本。

当我使用下面的代码时,它们仍然指向 HTTPS 版本。为了测试它是否是浏览器缓存问题,我使用了不同的文件名,但仍然是同样的问题。

RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteCond expr "! %{REQUEST_URI} -strmatch '*health-checker.html'"
RewriteRule ^(.*)$ https://%{SERVER_NAME}/ [R=301,L]

请注意,由于处理多个域名,我有意对我的域名进行硬编码。

感谢您的帮助

这里你真的不需要expr,你可以只使用常规的RewriteCond和这样的否定:

RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteCond %{THE_REQUEST} !/health-checker\.html [NC]
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L,NE]