.htaccess https到http,同时保留路径

.htaccess https到http,同时保留路径,.htaccess,redirect,.htaccess,Redirect,我在这里有一个网站和WordPress博客的小问题 在很短的一段时间内,我们使用https设置了所有内容,直到我们遇到一些问题,不得不返回HTTP 当时,我收集了一些.htaccess文件来处理这类问题,但实际上我从未尝试过“非www到www-ssl” 其目的是添加www并将https重定向到http RewriteCond %{HTTPS} on RewriteRule ^/?$ http://%{SERVER_NAME}/ [R=301,L] RewriteCond %{HTTP_HOST

我在这里有一个网站和WordPress博客的小问题

在很短的一段时间内,我们使用https设置了所有内容,直到我们遇到一些问题,不得不返回HTTP

当时,我收集了一些
.htaccess
文件来处理这类问题,但实际上我从未尝试过“非www到www-ssl”

其目的是添加www并将https重定向到http

RewriteCond %{HTTPS} on
RewriteRule ^/?$ http://%{SERVER_NAME}/ [R=301,L]

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
对我来说似乎很简单,我觉得应该行得通

我有两个
.htaccess
文件,一个用于
http://www.example.com/
和一个用于
http://www.example.com/blog
两者内容相同,因为用户主要通过博客来自SE

问题是:如果我加载
https://www.example.com/blog
我被重定向到
http://www.example.com/
而不是
http://www.example.com/blog

在写这个问题的时候,我想我尝试了这个问题,我有了添加这个的想法

RewriteCond %{HTTPS} on
RewriteRule ^/?$ http://%{SERVER_NAME}/{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
但是我只被重定向到
http://www.example.com/{REQUEST_URI}

有人能告诉我如何保持重定向查询的路径吗

如果您注意到在其他指令中有
%{REQUEST\u URI}
。您缺少上面的
%
前缀。这是获取
REQUEST\u URI
服务器变量值所必需的语法。但是还要注意,
REQUEST\u URI
的值已经包含了一个斜杠前缀,因此应该在替换中省略斜杠。也就是说,它应该是
%{REQUEST\u URI}
而不是
/{REQUEST\u URI}

还请注意,
重写规则
模式(
^/?$
)仅与站点的根目录(或
/blog
子目录,如果该
.htaccess
文件位于该子目录中)匹配。你需要匹配所有东西。因此,修改上述
重写规则
,如下所示:

RewriteRule ^ http://www.example.com%{REQUEST_URI} [R=301,L]
我还对域进行了硬编码,否则,在请求非规范(即非www)主机时,您将得到双重重定向

如果您注意到在其他指令中有
%{REQUEST\u URI}
。您缺少上面的
%
前缀。这是获取
REQUEST\u URI
服务器变量值所必需的语法。但是还要注意,
REQUEST\u URI
的值已经包含了一个斜杠前缀,因此应该在替换中省略斜杠。也就是说,它应该是
%{REQUEST\u URI}
而不是
/{REQUEST\u URI}

还请注意,
重写规则
模式(
^/?$
)仅与站点的根目录(或
/blog
子目录,如果该
.htaccess
文件位于该子目录中)匹配。你需要匹配所有东西。因此,修改上述
重写规则
,如下所示:

RewriteRule ^ http://www.example.com%{REQUEST_URI} [R=301,L]

我还对域进行了硬编码,否则,在请求非规范(即非www)主机时,您将得到双重重定向。

非常感谢,我会尽快尝试!我已经多次修改了
.htaccess
文件。首先我修改了下半部分,其次我还原并编辑了上半部分。尝试了几次,最后我意识到我只需要http到http的部分来访问
.htaccess
文件,我再次搜索并发现这些行实际上可以工作:
RewriteEngine On RewriteCond%{https}On RewriteRule(.*)http://%{http_HOST}%{REQUEST_URI}[R=301,L]
。。。除了文件中的正常Wordpress行之外,不需要其他任何东西。大概您正在某个地方规范化www/非www?只是如果在
.htaccess
中不这样做,在执行https到http重定向时,在请求非规范主机名时,最终会出现双重重定向。另外请注意,如果替换中未使用URL路径,则不需要捕获URL路径(即,
(.*)
)。这应该是
*
或只是
^
-以便匹配所有请求。非常感谢,我会尽快尝试!我已经多次修改了
.htaccess
文件。首先我修改了下半部分,其次我还原并编辑了上半部分。尝试了几次,最后我意识到我只需要http到http的部分来访问
.htaccess
文件,我再次搜索并发现这些行实际上可以工作:
RewriteEngine On RewriteCond%{https}On RewriteRule(.*)http://%{http_HOST}%{REQUEST_URI}[R=301,L]
。。。除了文件中的正常Wordpress行之外,不需要其他任何东西。大概您正在某个地方规范化www/非www?只是如果在
.htaccess
中不这样做,在执行https到http重定向时,在请求非规范主机名时,最终会出现双重重定向。另外请注意,如果替换中未使用URL路径,则不需要捕获URL路径(即,
(.*)
)。这应该是
*
或只是
^
-以便匹配所有请求。