![带有通配符 SSL 的 htaccess](https://linux22.com/image/580555/%E5%B8%A6%E6%9C%89%E9%80%9A%E9%85%8D%E7%AC%A6%20SSL%20%E7%9A%84%20htaccess.png)
我们有一个通配符 SSL 证书,它可以在给定域的任何子域上使用。
因此在这个服务器中我们有这样的文件结构:
/主页/DOMAIN/public_html/subdomainx /主页/DOMAIN/public_html/subdomainy ETC...
现在,证书已安装,但是当您通过 https 访问任何子域(例如:hxxps://subdomainx.domain.com)时,它指向
/主页/域名/public_html/index.php
当您通过 https hxxps://subdomainx.domain.com 访问子域时,我们需要
它指向与 http 等效的同一目录:/主页/DOMAIN/public_html/subdomainx
我们的提供商告诉我们这是不可能的,当前的行为是正确的,并且要实现这一点,我们需要使用 htaccess 来实现。
我尝试了一些方法,包括这个解决方案,这似乎正是我需要的:https://stackoverflow.com/questions/5365612/advice-on-configuring-htaccess-file-to-redirect-http-subdomain-to-https-equival
但无法让它工作。
有什么建议吗?谢谢。
添加: 服务器是 Apache。
答案1
确保您已在 vhost 文件夹中正确配置 ssl.subdomain.domain.com.conf。
该文件看起来应该像这样:
<VirtualHost *:443>
ServerAlias www.subdomain.domain.com subdomain.domain.com
ServerAdmin [email protected]
DocumentRoot /home/domain/public_html/subdomain
BytesLog domlogs/domain-bytes_log
ServerName www.domain.com
CustomLog domlogs/domain.com-access_log combined
#ScriptAlias /cgi-bin/ /home/domain/public_html/cgi-bin/
User domain
Group domain
suPHP_ConfigPath /home/domain/etc/
SSLEnable
SSLCertificateFile /opt/apache/conf/ssl.crt/domain.com.crt
SSLCertificateKeyFile /opt/apache/conf/ssl.key/domain.com.key
SSLLogFile /var/log/ssl/domain.com_log
UserDir public_html
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
.
.
.
</VirtualHost>
答案2
我敢打赌你需要一个NameVirtualHost *:443
(或者不管你的虚拟主机是如何定义的)。
另一个选择是定义一个VirtualDocumentRoot
,如果您的 vhost 配置除了 docroot 之外都相同。
.htaccess
文件绝对不需要任何事物您可以使用 Apache 来执行这些操作 - 除了“使用 htaccess 文件”之外。