7

通过与 Apache 2.2 的 SSL 连接透明地重写 URL 的最佳方法是什么?

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?

4

3 回答 3

3

配置单个 VirtualHost 以同时为 secure.example.com 和 dbadmin.example.com 提供服务(使其成为唯一的 *:443 VirtualHost 实现此目的)。然后,您可以使用mod_rewrite调整对 dbadmin.example.com 的请求的 URI:

<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 重写工作后设置它。

于 2008-08-15T08:21:28.300 回答
2

除非您的 SSL 证书是“通配符”或多站点类型,否则我认为这不会起作用。重写将显示在浏览器中,并且地址栏中的名称必须对证书有效,否则您的用户将看到一个安全错误(他们总是可以接受并继续,但这听起来不像您想要的)。

更多在这里

于 2008-08-12T02:10:56.480 回答
0

有 apaches mod_rewrite,或者您可以设置 apache 将https://dbadmin.example.com指向服务器上的 path/to/example.com/dbadmin

<VirtualHost *>
ServerName subdomain.domain.com
DocumentRoot /home/httpd/htdocs/subdomain/
</VirtualHost>
于 2008-08-12T01:12:14.740 回答