Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如何使用.htaccess通过HTTP和HTTPS将传入请求从domain.com重定向到www.domain.com?_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 如何使用.htaccess通过HTTP和HTTPS将传入请求从domain.com重定向到www.domain.com?

Apache 如何使用.htaccess通过HTTP和HTTPS将传入请求从domain.com重定向到www.domain.com?,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我有剧本: RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 重写规则以重定向/旧到/新 RewriteCond %{REQUEST_URI} ^/old$ RewriteRule . /new [L,R=301] 哪个将重定向到,但如果用户通过HTTPS请求URL,是否希望此脚本也能正常工作?我似乎在任何地方都找不到解决办法=/ 有人有什

我有剧本:

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
重写规则以重定向/旧到/新

RewriteCond %{REQUEST_URI} ^/old$
RewriteRule   . /new [L,R=301]
哪个将重定向到,但如果用户通过HTTPS请求URL,是否希望此脚本也能正常工作?我似乎在任何地方都找不到解决办法=/

有人有什么想法吗

谢谢

使用此规则:

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.example.com%{REQUEST_URI} [L,R=301]

在我们的情况下,似乎无法做到这一点。。。。显然是因为证书必须首先被浏览器接受。如果不接受,由于浏览器的“警告”消息,将不允许重定向


我也有同样的情况,我的证书是针对domain.com的,而不是www.domain.com。发生的情况是,如果用户键入,它将转到我们服务器的SSL错误页面,如果用户坚持继续转到该页面。我所做的是将此标记添加到错误页面HTML标题部分(错误页面位置因服务器而异):



它将用户重定向到domain.com。不建议这样做,但如果您现在负担不起通配符证书,这是一个快速的解决办法。

您确定使用HTTPS,并且HTTPS请求由同一虚拟主机处理或指向同一目录吗?HTTP是HTTP over SSL。因此,必须先建立SSL连接,然后才能发送HTTP请求。因此,是的,在HTTP重定向发生之前,必须接受证书。“我们没有使用接受的SSL证书”应该是相关信息。这大大改变了这个问题。这个问题的目的是为了缓解domain.com和www.domain.com没有证书的问题,但我们现在发现,这不会像上面提到的那样起作用。
RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]

RewriteCond %{HTTPS} =off
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
<meta http-equiv="refresh" content="0; url=http://domain.com/" />