我在虚拟主机中为子域设置了两个简单的重定向;一个有效,一个无效:
<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 页面。 谁能指出我正确的方向?
编辑:我将上面的虚拟主机文件更新到较新版本,问题已更改,因此我也更新了问题描述。
好吧,上面的答案都不起作用,所以我不得不继续努力。 最终,我从 :443 virtualhost 部分中删除了重定向行,并在同一部分添加了以下两行以使其正常工作:
RewriteEngine On
RewriteRule ^/$ https://subdomain.site.com/subdirectory/login.php [R=301,NC,L]
您必须将此行添加到文件顶部
名称虚拟主机 x.x.x.x:443或域名称:443
检查您的阿帕奇版本。
您必须将此行添加到文件顶部:
NameVirtualHost x.x.x.x
和
Listen 80
Listen 443
问候
如果你在 ubuntu 上(我的意思是基于 debian 的 Linux 发行版)在你的/etc/hosts 中,你应该定义如下一行:127.0.0.1 您的域
然后在 中为您的新站点配置创建一个新文件:/etc/apache2/sites-available/
并将其命名为您的域名 .conf 只是为了不要忘记该 conf 文件的用途。然后使用以下命令启用新的 confa2ensite your_conf_name然后重新启动 Apache 。现在,您的新站点配置已准备就绪。现在看看下面的链接:http://httpd.apache.org/docs/2.2/bind.html你必须提到你的Apache应该在多个端口上监听在您的情况下 80 , 443
如果您使用的是SSL,则应更改default-ssl.conf设置,例如
<VirtualHost *:443>
ServerName subdomain.site.com
ServerAlias subdomain.site.com
DocumentRoot /var/www/html/subdomain.site.com