【问题标题】:Subdomain not working with https子域不适用于 https
【发布时间】:2017-10-28 04:20:32
【问题描述】:

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

主域可以正常使用 http 和 https,但子域只能使用 http

和 https://{subdomain}.{domain}.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 中使用 Apache。
  • 主域在 PHP Wordpress 中。
  • 子域在 PHP Codeigniter MVC 中。

提前致谢!

【问题讨论】:

  • 您为子域购买了 SSL 吗?
  • 您是否在主域中使用子域通配符?
  • 我认为您需要为主域和子域生成证书,通配符不起作用。 (至少在让我们加密时,您必须提及所有域和子域)。

标签: php .htaccess codeigniter ssl


【解决方案1】:
# 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]

(仅当您确定它工作正常时,才将 R 更改为 R=301。)

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 2021-02-09
    相关资源
    最近更新 更多