我找到了几个关于如何仅重定向 root、如何从 重定向https
到http
(使用.htaccess
) 的问答。但没有一个问题将两者合并在一起。而且这个答案太肮脏了:https://stackoverflow.com/questions/17952418/force-web-root-to-use-http。所以我想到了如下的答案:
RewriteEngine on
RewriteCond %{HTTP_HOST} provectium\.com [NC]
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
这是有效的吗?我希望它能够让任何查询https://provectium.com/file.html将被重定向至http://provectium.com/file.html,但不包括子文件夹(它们应该保留https://provectium.com/directory/)。 谢谢。
PS 我在某处读到第二行可能是RewriteCond %{HTTP_HOST} ^provectium\.com [NC]
,额外的作用是什么^
?
答案1
这应该适用于 / (根)和 / 下的所有页面,但不适用于任何子文件夹。
RewriteEngine on
RewriteCond %{HTTP_HOST} provectium\.com [NC]
RewriteCond %{HTTPS} on
RewriteRule ^([^/]+)?$ http://%{HTTP_HOST}/$1 [R=301,L]
如果你输入^
第二行,则仅当主机完全匹配时,规则才会匹配provectium.com
,并且不会匹配www.provectium.com
。