2017-05-27 63 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] 

旁白:這些重寫也不一致。第一個內部重寫使用路徑信息。第二個重寫到查詢字符串。你應該做一個或另一個,而不是兩個(除非這是兩個不同系統的混合)?