【问题标题】:My subdomain keeps redirecting to my main domain我的子域不断重定向到我的主域
【发布时间】:2020-05-31 08:54:50
【问题描述】:

我确定这个问题肯定已经被问过很多次了,我研究了一天,但仍然无法弄清楚。

我有一个域 - domain.com,现在我想为其添加一个子域 - test.domain.com。我创建了一个虚拟主机文件和 DNS A 记录 - test.domain.com 指向我的服务器 IP。但是每当我尝试访问我的 test.domain.com 时,它都会一直重定向到 domain.com。我的 Apache2 虚拟主机文件配置如下

domain.com.conf

<VirtualHost *:80>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/domain.com

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        RewriteEngine on
        RewriteCond %{SERVER_NAME} =www.domain.com [OR]
        RewriteCond %{SERVER_NAME} =domain.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<Directory "/var/www/domain.com">
    AllowOverride All
</Directory>

domain.com-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/domain.com

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined


ServerName domain.com
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias www.domain.com
SSLCertificateFile /etc/letsencrypt/live/domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem

</VirtualHost>
</IfModule>

test.domain.com.conf

<VirtualHost *:80>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/test.domain.com

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        RewriteEngine on
        RewriteCond %{SERVER_NAME} =www.test.domain.com [OR]
        RewriteCond %{SERVER_NAME} =test.domain.com
        RewriteRule ^ http://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<Directory "/var/www/test.domain.com">
    AllowOverride All
</Directory>

我已经使用命令 a2ensite 启用了 conf 文件,并多次重新启动了 apache(以及我的服务器 droplet),但仍然无法正常工作。我在 Ubuntu 16.04.6 上运行。

任何建议将不胜感激。非常感谢您!

【问题讨论】:

    标签: apache redirect dns subdomain virtualhost


    【解决方案1】:

    一个简约的例子是这样的:

    <VirtualHost *:80>
        DocumentRoot /var/www/test.example.com
        ServerName test.example.com
        ServerAlias www.test.example.com
    </VirtualHost>
    

    在本例中,您为test.example.comwww.test.example.com 声明一个虚拟主机。

    请注意,我在这里使用的是 example.com 而不是 domain.com,因为 posting restrictions 在此网站上处于活动状态。

    您的子域中的 RewriteRule 指令似乎不正确,至少在语法上是这样。它们可能导致重定向问题。 所以我会删除它们并稍后处理重定向。从一个简单的配置开始,验证它并在以后扩展更多规则。

    提示:您可以使用 curl(如果您的 PC 上不可用,则从您服务器上的命令行)进行如下测试:curl -L --head "http://example.com"。 测试主域名,然后在 http 和 https 中测试子域。如果遇到任何 SSL/TLS 错误,Curl 中有一个选项可以忽略。

    查看会发生什么并注意重定向(如果有)(状态代码 301/302)。

    我更喜欢使用 Curl 进行测试,因为浏览器缓存可以欺骗你。

    【讨论】:

      猜你喜欢
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 2016-06-11
      • 2018-03-11
      • 1970-01-01
      相关资源
      最近更新 更多