【发布时间】:2015-02-22 18:20:49
【问题描述】:
我在我的虚拟主机中为子域设置了两个简单的重定向;一个有效,一个无效:
<VirtualHost *:80>
ServerName subdomain.site.com
Redirect / https://subdomain.site.com/subdirectory/login.php
</VirtualHost>
<VirtualHost x.x.x.x:443>
ServerName subdomain.site.com
Redirect / https://subdomain.site.com/subdirectory/login.php
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/subdomain.site.com.crt
SSLCertificateKeyFile /etc/httpd/ssl/subdomain.site.com.key
ErrorLog logs/ssl_error_log
CustomLog logs/ssl_access_log common
</VirtualHost>
第一个重定向有效。也就是说,如果有人在浏览器中简单地键入 subdomain.site.com,它会重定向到 https 和正确的子目录。第二个重定向不起作用。如果有人输入https://subdomain.site.com,它会显示“Firefox 检测到服务器正在以一种永远不会完成的方式重定向对该地址的请求”并且浏览器 URL 变为“subdomain.site.com/subdirectory/login.phpsubdirectory/login” .phpsubdirectory/login.phpsubdirectory/login.php..." 而不是重定向到正确的https://subdomain.site.com/subdirectory/login.php 页面。谁能指出我正确的方向?
编辑:我将上面的 VirtualHosts 文件更新到了较新的版本,问题已经改变,所以我也更新了问题描述。
【问题讨论】:
-
如果使用
https方案,你真的需要重定向吗?当端口为443时,进行 SSL 握手并为网页提供服务。只是好奇。 -
<VirtualHost>块是否已满?应该还有几行: SSLEngine on SSLCertificateFile /path/to/your_domain_name.crt SSLCertificateKeyFile /path/to/your_private.key SSLCertificateChainFile /path/to/DigiCertCA.crt -
因此 SSLEngine 代码块的其余部分位于 conf.d 目录中的单独 ssl.conf 文件中。我将这些条目移动到同一个 site.conf 文件中,最终破坏了一切。再试一次。
标签: apache redirect virtualhost