根据a DreamHost article on enforcing HTTPS模式" ^"和" ^(。*)$"导致不同的RewriteRule行为,但我不明白为什么。
根据文章,使用" ^"如下"强制使用https":
重写任何http请求RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
同一篇文章说使用" ^(。*)$"而不是" ^"在RewriteRule"中也强制直接链接的资源(图像,CSS等)使用https"。
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
为什么" ^(。*)$"在" ^"中,在RewriteRule中应用于页面资产才不是?除了文章提到的内容之外,是否存在一些区别元素,例如相对与绝对URL? Apache HTTP Server如何知道资源是页面资产而不是直接请求?
顺便说一下,我已经解释了#34;直接链接资源"特别指的是页面资产,而不是通常意义上的HTTP链接,所以我已经相应地表达了我的问题,但如果我误解了,那么我会很感激任何见解。
答案 0 :(得分:1)
我知道某个托管公司有自己的mod_rewrite
实现。这两条规则之间的实践差异是什么?
理论上,它们应该完全相同,因为任何URI都匹配^
和^(.*)$
此外,当目的地甚至不使用正则表达式的部分匹配时(他们使用%{REQUEST_URI}
而不使用$1
)。
会如果它是^$
(基本上是空字符串,那么只会重定向根网址)会产生影响。
直接或推荐的访问权限也不会改变,除非您在RewriteCond
上使用%{HTTP_REFERER}