如何将http://domain.com重定向到https://www.domain.com?

时间:2015-06-24 03:55:35

标签: php wordpress .htaccess redirect ssl

我已经获得了SSL证书。 我安装了Wordpress,请参阅下面的hostgator文件管理器中的文件夹结构:

我已将define('FORCE_SSL_ADMIN', true);放入wp_config.php

Wordpress常规设置: WordPress地址(URL):https://www.domain.com/blog 网站地址(网址):https://www.domain.com

public_html
  -> blog (inside is the wordpress installation)

database structure
  -> wp_options
      -> siteurl: https://www.domain.com/blog
      -> home: https://www.domain.com

我尝试了hostgator cpanel重定向,但没有效果。

我还尝试了在谷歌搜索时编辑.htaccess的一些解决方案。

也许我错过了关于文件夹结构的一些事情。

.htaccess

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /blog/

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

# END WordPress

4 个答案:

答案 0 :(得分:3)

您通常只需将规则添加到wordpress规则中。他们在wp规则之前走了。

RewriteEngine On
#rewrite http to https and add www. All cases covered
RewriteCond %{HTTPS} !^on [OR]
RewriteRule %{HTTP_HOST} ^exmaple\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/

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

# END WordPress

答案 1 :(得分:1)

您将需要2个虚拟主机,一个用于端口443(https),另一个用于端口80.在端口80中,您只需为所有流量设置重定向规则

  <VirtualHost *:80>
  ...
    RewriteEngine On
    RewriteRule .* https://www.domain.com [R=301,L]
  ...
  </VirtualHost>

答案 2 :(得分:0)

使用

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

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

在所有条件下强制使用SSL(使用或不使用www)。

此外,正如您所做的那样,在Wordpress常规设置中更改为https

不要# BEGIN WordPress# END WordPress重写块中添加强制SSL规则,因为如果您重新保存永久链接(甚至是插件),您的SSL规则将会被删除。

然后使用Firefox(或Firebug)或ChromeSafariIE中的开发者工具查看您是否有{{1}元素错误,例如来自样式表和functions.php文件中的硬编码non-secure URL。

答案 3 :(得分:0)

这是我修复的最后一个度假胜地。我在header.php中设置了一个php代码,用于检查输入的URL是否为https,如果没有,则重定向到https的URL。

<?php
    if (empty($_SERVER['HTTPS'])) {
        header('Location: https://domain.com');
        exit;
    }
?>

全心全意,