2017-05-27 94 views
1

发布通配符SSL,但仍然无法将https与子域名一起使用。子域名不能与https

主要领域工作正常使用HTTP和HTTPS,但两者的子域名只适用于HTTP

和https:// {子域} {}域名.COM 产生404错误

htaccess的代码是:

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    # Turn on HTTPS 
    RewriteCond %{HTTPS} on 
    RewriteRule (.*) https://subdomain.domain.com?/$1 [L,QSA] 

    RewriteRule ^([a-z0-9_-]+)\.html$ index.php/page/$1 [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond $1 !^(index\.php|asset|robots\.txt) 
    RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA] 
</IfModule> 
  • 使用鸭疼在Linux。
  • 主要域名在PHP的WordPress的。
  • 子域是PHP Codeigniter MVC。

在此先感谢!

+0

您是否为子域购买了SSL? –

+0

和你使用子域通配符为你的主域名? –

+0

我认为你需要为main和subdomain生成证书,通配符将不起作用。 (至少让我们加密你必须提及所有的域和子域)。 – kishor10d

回答

0
# Turn on HTTPS 
RewriteCond %{HTTPS} on 
RewriteRule (.*) https://subdomain.domain.com?/$1 [L,QSA] 

你的 “强制HTTPS” 指令无效。这看起来像可能导致404(否则,它会导致重定向循环)。上述指令将请求重定向到查询字符串,清除URL路径。 ?看起来放错了位置。 (顺便说一下,这与您在下面的重写中所做的相似 - 但这是非常不同的。)

只需尝试彻底删除这些指令即可。你还有404吗?

上面应该写这样的:

RewriteCond %{HTTPS} !on 
RewriteRule (.*) https://subdomain.domain.com/$1 [R,L] 

(更改RR=301只有当你确定它工作正常。)

RewriteRule ^([a-z0-9_-]+)\.html$ index.php/page/$1 [L] 
: 
RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA] 

旁白:这些重写也不一致。第一个内部重写使用路径信息。第二个重写到查询字符串。你应该做一个或另一个,而不是两个(除非这是两个不同系统的混合)?