我是 Apache 设置的新手,遇到了一个问题。实际上有几个问题,但只剩下这个了 :)
我已经为其设置了一个子域 sub_example_com 和两个虚拟主机:一个用于端口 80,另一个用于 433。我已经安装了 ssl wildecard(如下所示:http://phaseshiftllc.com/articles/2008/10/27/multiple-secure-subdomains-with-a-wildcard-ssl-certificate.html) 在子域上使用 SSL。它有效,唯一的问题是我有一个像 /var/www/sub_example_com/ 这样的文件夹结构
然后我使用重定向设置从 vhost:80 到 vhost:433 的重定向(像这样http://wiki.apache.org/httpd/RedirectSSL)。因此,现在当有人仅使用 http 时,它会直接转到 https。这很好。
但是。当有人输入 example_com/sub_example_com/ 时,它不会重定向他。我尝试设置 ServerAlias,但没有成功。而且对我来说这似乎有点奇怪。
您将如何解决这个问题?不使用重写是否可行?可以在定义中完成吗?
提前致谢
PS. 我把地址中的点改成了破折号,因为我不能发布超过两个链接
答案1
您需要遵循以下说明将 HTTP 重写为 HTTPS:
http://wiki.apache.org/httpd/RewriteHTTPToHTTPS
您使用的 RedirectSSL wiki 页面将仅重定向单个 URI,而不是非 SSL 站点上的所有 URI。
因此,非 SSL 虚拟主机中的情况如下:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
上述代码会将对 HTTP 服务器的每个请求重定向到 HTTPS 服务器。上面的链接还会向您展示如果您只想重定向特定目录该怎么做。
顺便说一句,ServerAlias 指令不适用于此。 它用于在使用 Name VirtualHosts 时匹配备用名称。您应该将其恢复到之前的状态。