使用mod_rewrite模拟SSL虚拟主机?
通过与Apache 2.2的SSL连接透明地重写URL的最佳方式是什么?使用mod_rewrite模拟SSL虚拟主机?
Apache 2本身不支持SSL连接的多个基于名称的虚拟主机,我听说mod_rewrite可以帮助解决这个问题。我愿做这样的事情:
我已经设置了服务器,以便网站可以通过
https://secure.example.com/dbadmin
进行访问,但我想有这个作为https://dbadmin.example.com
如何是否将其设置为使重写规则将dbadmin.example.com重写为secure.example.com/dbadmin,但不在客户端的地址栏上显示重写(即,客户端仍然会看到dbadmin.example.com) ,通过https?
配置单个VirtualHost以同时提供secure.example.com和dbadmin.example.com(使其成为唯一*:443 VirtualHost实现此目的)。然后,您可以使用mod_rewrite调整的URI请求dbadmin.example.com:
<VirtualHost *:443>
ServerName secure.example.com
ServerAlias dbadmin.example.com
RewriteEngine on
RewriteCond %{SERVER_NAME} dbadmin.example.com
RewriteRule !/dbadmin(.*)$ /dbadmin$1
</VirtualHost>
你的SSL证书需要两个secure.example.com和dbadmin.example.com有效。它可以是Terry Lorber提到的通配符证书,也可以使用subjectAltName字段添加其他主机名。
如果遇到问题,请先将其设置为<VirtualHost *>
,并检查它是否在没有SSL的情况下正常工作。 SSL连接和证书是一个单独的复杂层,您可以在URI重写工作后设置它。
有阿帕奇mod_rewrite的,或者你可以配置Apache直接https://dbadmin.example.com到路径/到/ example.com/dbadmin服务器
<VirtualHost *>
ServerName subdomain.domain.com
DocumentRoot /home/httpd/htdocs/subdomain/
</VirtualHost>
上除非你的SSL证书是“通配符”或多站点善良,那么我认为这不会起作用。重写将显示在浏览器中,并且地址栏中的名称必须对证书有效,否则用户将看到安全错误(他们总是可以接受并继续,但听起来不像您想要的那样)。
更多here。