是否可以使用具有单页ssl证书的域重写子域?
我想做什么:
将subdomain.domain.com重写为domain.com/index.php&page=subdomain
到目前为止我得到了什么:
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?user=%1&req=$1 [L,QSA]
这给了我一个糟糕的SSL证书,因为我没有子域证书。 在php中的$ _SERVER上使用var_dump会返回以下内容:
["SCRIPT_URI"]=> string(24) "https://subdomain.domain.com/"
["HTTPS"]=> string(2) "on"
["SSL_TLS_SNI"]=> string(15) "subdomain.domain.com"
["SSL_SERVER_S_DN_CN"]=> string(14) "www.domain.com"
所以它仍然将它作为子域传递而不是重定向它。
如果我使用完整域作为重写规则,它可以工作,但它也会将标题栏中的网址转到domain.com/index.php?user=subdomain,而不是保留网址:
RewriteRule ^(.*)$ https://domain.com/index.php?user=%1&req=$1 [L,QSA]
那么如何在保留subdomain.domain.com的同时将子域重写到domain.com/index.php?user=subdomain并仍然可以使用单页ssl证书呢?
答案 0 :(得分:2)
无法让网络服务器在子域(例如subdomain.domain.com
)上提供网页,但保留仅在domain.com
上有效的单页SSL证书。从技术上讲,它是可能的,但这样做会使浏览器警告用户无效的SSL证书,并在访问者中对您的网站产生不信任。现在有几种方法可以解决这个问题:
subdomain.domain.com
)这里最好的选择是3,因为您可以在多个网站上免费获得一页SSL证书并将其用于您的目的(例如StartSSL,LetsEncrypt)。设置新的虚拟主机配置并不困难,因为您可以复制网站现有虚拟主机配置的大部分内容(您只需要更改一些内容(例如SSL证书,SSL密钥,SSL链,网站名称...))。