设置.htaccess文件子域,但也非www。到www

时间:2016-11-02 16:18:21

标签: .htaccess redirect https

我们有一个使用各种子域的Opencart网上商店设置。我正在尝试配置我们的.htaccess文件来执行以下操作,但无法完全克服终点线。

我们的网站以这种方式设置:

主域名

ourdomain.com

子域名x 10

sub1.ourdomain.com

sub2.ourdomain.com

sub3.outdomain.com

以下是必须发生的事情:

主域名或子域名的http版本的所有访问者都必须重定向到https。

任何子域名的访问者都必须重定向到https://subdomain.ourdomain.com但没有www。

https://ourdomain.com的访问者必须重定向到https://www.ourdomain.com

基本上我总是需要将主要域名的访问者定向到www。版本以确保CSS文件正确呈现。如果www,图标和图形将丢失。不见了。

我目前已将其配置为将所有访问者重定向到https但我不知道如何应用www。仅限主域。

希望一切都有意义。

我目前的代码:

RewriteCond %{HTTP_HOST} ^ourdomain.com$
RewriteRule (.*) http://www.ourdomain.com/$1 [R=301,L] 

1 个答案:

答案 0 :(得分:1)

您可以使用以下规则:

RewriteEngine on

#Redirect "http://sub.example.com" to "https://sub.example.com"#
RewriteCond %{HTTP_HOST} ^((?!www\.).+)\.example\.com$ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]
#Redirect "http://example.com" or "http://www.example.com"  to "https://www.example.com"#
RewriteCond %{HTTP_HOST} ^example\.com$ [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule ^ https://www.%1%{REQUEST_URI} [NE,L,R]

在上面的RewriteConds中将 example.com 替换为 yourdomain.com