.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]
目前我们在 .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]