Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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以将所有流量重定向到安全的www域_Apache_.htaccess_Redirect_Url Redirection - Fatal编程技术网

Apache 如何编辑htaccess以将所有流量重定向到安全的www域

Apache 如何编辑htaccess以将所有流量重定向到安全的www域,apache,.htaccess,redirect,url-redirection,Apache,.htaccess,Redirect,Url Redirection,如何实现以下目标: 将所有http://domain.com重定向到https://www.domain.com 将所有http://www.domain.com重定向到https://www.domain.com 将所有https://domain.com重定向到https://www.domain.com 所以基本上,我的所有流量,无论是非www还是www,都将重定向到SSL www域 编辑: 此外,我有两个子域可以在http上工作,因此我希望实现上述目标,并使这两个子域不受上述重定向规

如何实现以下目标:

  • 将所有http://domain.com重定向到https://www.domain.com
  • 将所有http://www.domain.com重定向到https://www.domain.com
  • 将所有https://domain.com重定向到https://www.domain.com
所以基本上,我的所有流量,无论是非www还是www,都将重定向到SSL www域

编辑:


此外,我有两个子域可以在http上工作,因此我希望实现上述目标,并使这两个子域不受上述重定向规则的影响。

首先,您可以编辑
httpd.conf
文件,并将其添加到:80服务器

 <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
            RewriteRule ^(.*)$ https://www.domain.com$1 [L,R=301]
 </IfModule>
此外,您还可以在vhost文件中添加以下内容

重定向永久/https://www.domain.com/

在vhost_ssl中:

 <IfModule mod_rewrite.c>
                RewriteEngine On
                RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
                RewriteRule ^(.*)$ https://www.domain.com$1 [L,R=301]
</IfModule>

重新启动发动机
RewriteCond%{HTTP_HOST}^domain.com$[NC]
重写规则^(.*)$https://www.domain.com$1[L,R=301]

您可以在Root/.htaccess中使用以下代码:

RewriteEngine on
#Http to https
#Exclude subdomains
RewriteCond %{HTTP_HOST} !^(sub1|sub2)
RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^ https://www.example.com%{REQUEST_URI} [NC,L,R]
#add www on ssl
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [NC,L,R]
这将重定向:

到ssl

第二条规则将在ssl上向非www请求添加www,重定向:


可能重复的FYI(来自Apache 2.4文档):
如果您有权访问httpd主服务器配置文件,则应避免完全使用.htaccess文件。使用.htaccess文件会降低Apache http服务器的速度。
@Croises-您提供的链接仅用于www到https www。其他两个非www到https www和https非www到https www的链接如何?@vallismortis-我无法访问httpd主服务器配置文件,这就是为什么我要求提供htaccess解决方案的原因。重定向所有http://domain.com到https://www.domain.com,并将所有https://domain.com重定向到https://www.domain.com正在工作。但是,将所有http://www.domain.com重定向到https://www.domain.com不适用于上述htaccess代码。这正是我所寻找的。
RewriteEngine on
#Http to https
#Exclude subdomains
RewriteCond %{HTTP_HOST} !^(sub1|sub2)
RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^ https://www.example.com%{REQUEST_URI} [NC,L,R]
#add www on ssl
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [NC,L,R]