Apache 虚拟主机重定向不起作用



我在虚拟主机中为子域设置了两个简单的重定向;一个有效,一个无效:

<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

最新更新