.htaccess https 到 http 重定向与现有规则冲突

.htaccess https to http redirect conflict with existing rule

目前我们在 .htaccess 中有这个规则

RewriteEngine on <br>
RewriteCond %{REQUEST_URI} !^/site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site/
RewriteRule ^(/)?$ site/index [L]

这样做是针对任何访问,如果找不到页面,我们将重定向到子文件夹调用站点。当发生这种情况时,url 将不会将站点显示为子文件夹。
例如,如果我们有 /rootFolder/site/temp.html 这将在 url 中显示为

http://www.domain.com/temp.html

这工作正常,但现在我们需要在用户访问站点时添加 https 重定向。

这是我想出的新规则

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ https://%{HTTP_HOST}/site/
RewriteRule ^(/)?$ https://%{HTTP_HOST}/site/index [L]

但是这个问题现在 url 将显示站点子文件夹 https://www.domain.com/site/temp.html

如果用户这样做,我该如何实现

http://www.domain.com/temp.html 它会在站点子文件夹中找到 temp.html 并重定向到 https,而 url 只会显示

https://www.domain.com/temp.html

谢谢

如果你分两次完成,总是将请求的任何内容重定向到 https,然后 运行 你的重写规则怎么样:

RewriteCond %{HTTPS} off
#301 flag redirects instead of rewriting
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#leaving your original rules as is
RewriteCond %{REQUEST_URI} !^/site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site/
RewriteRule ^(/)?$ site/index [L]