htaccess重定向子域名和https

时间:2014-01-07 23:01:53

标签: apache .htaccess mod-rewrite ssl subdomain

我正在使用托管两个域(均使用SSL)的HostGator帐户。我也在其中设置了不使用SSL的子域。我有一个重定向设置,以便http将重定向到https,但我在使用子域时遇到问题。

以下是我需要做的事情:

http://site1.com - > https://site1.com

http://www.site1.com - > https://site1.com

dev.site1.com - >没有重定向

http://site2.com - > https://site2.com

http://www.site2.com - > https://site2.com

dev.site2.com - >没有重定向

现在发生的事情是,当我访问dev.site2.com时(无论我是否输入https)我看到的是https://site1.com,虽然它似乎没有重定向,因为地址酒吧仍然显示dev.site2.com

以下是我在htaccess中所拥有的内容:

RewriteEngine On
RewriteBase /~hostgatorusername/
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteCond %{HTTP_HOST} !=dev.*
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]


# BEGIN WordPress
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /~hostgatorusername/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /~hostgatorusername/index.php [L]
</IfModule>

# END WordPress

我仍然在努力完全掌握htaccess,所以如果有人能帮我理解我做错了什么,我会很高兴。谢谢!

更新:我还需要https://www.site1.com重定向到https://site1.comhttps://www.site2.com重定向到https://site2.com

1 个答案:

答案 0 :(得分:0)

试试这段代码:

# BEGIN WordPress
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /~hostgatorusername/

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^dev\. [NC]
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule .* https://%1%{REQUEST_URI} [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /~hostgatorusername/index.php [L]
</IfModule>

# END WordPress