Apache 子域名重定向到主域名

Apache 子域名重定向到主域名

我有一台正在尝试设置的 Apache 服务器,是的,我使用的是最新版本。我想将主域名用作网站,然后将子域名用作会员论坛。我已设置子域名,并且还在confApache 等目录中设置了文件。我不知道我做错了什么,它只是将我重定向到我网站的主页,而不是转到.html我为测试设置的页面。

这是我的文件的代码.conf

<VirtualHost *:443>
    # ServerName forum.example.com

    ServerAdmin [email protected]
    ServerName forum.example.com
    ServerAlias forum.example.com
    DocumentRoot /var/www/forum.example.com

    <Directory /var/www/forum.example.com>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>

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

<VirtualHost *:80>
    # ServerName forum.example.com

    ServerAdmin [email protected]
    ServerName forum.example.com
    ServerAlias forum.example.com
    DocumentRoot /var/www/forum.example.com

    <Directory /var/www/forum.example.com>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>

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

.htaccess据我所知我没有文件

答案1

好的..终于解决了问题..让它工作了

首先在你的主机 dns 上...你需要添加你的服务器名称的记录我使用 namecheap.com ..我添加了一个A + Dynamic DNS Record主机 john 和我的 ip 地址...与我的 www 的 A 记录相同...我假设它只是A Record其他地方的标准

一旦有了这个,你可能需要一段时间才能真正 ping 通它,一旦你可以 ping 通它,如果你的所有其他设置都正确,那么你就可以开始了

现在好了,对于我使用的配置文件。我创建了两个sites-available

第一个叫做001-john.conf我发现文件结尾很重要.conf否则你将无法使用似乎可以解决问题的命令。

在该配置中我添加了以下内容:

<VirtualHost *:80>
    ServerAdmin [email protected] (of course you would use your domain name instead of mysite.com)
    ServerName john.mysite.com
    ServerAlias john.mysite.com
    DocumentRoot /web/john (of course you would make the root the path to the folder where the files are stored)

<Directory />
    Options FollowSymLinks ExecCGI
    AllowOverride ALL
</Directory>
<Directory /web/john/>
            Options ExecCGI FollowSymLinks Includes Indexes (or whatever directives you want)
            AllowOverride ALL
            order allow,deny
            allow from all
</Directory>

ScriptAlias /cgi-bin/ /web/plus/cgi-bin/  (if you wanted to create a cgi bin use your correct path for this)
<Directory "/web/plus/cgi-bin">
    AllowOverride ALL
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>
ErrorLog /var/log/apache2/errorjohn.log
CustomLog /var/log/apache2/accessjohn.log combined
</VirtualHost>

第二个配置文件用于 ssl,我将其命名为它001-john-ssl.conf 看起来像这样:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin [email protected]
        ServerName john.mysite.com
        ServerAlias john.mysite.com
        DocumentRoot /web/john

<Directory />
    Options FollowSymLinks
    AllowOverride ALL
</Directory>

<Directory /web/john/>
    Options Indexes FollowSymLinks Includes MultiViews ExecCGI
    AllowOverride ALL
            Require all granted
</Directory>


ScriptAlias /cgi-bin/ /web/plus/cgi-bin/
<Directory "/web/plus/cgi-bin">
    AllowOverride ALL
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>




    LogLevel warn
    ErrorLog /var/log/apache2/errorjohn.log
    CustomLog /var/log/apache2/accessjohn.log combined

   SSLEngine on
   SSLProtocol all -SSLv2
   SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
   SSLCertificateFile    /etc/apache2/ssl/your.crt file
   SSLCertificateKeyFile /etc/apache2/ssl/your.key file
   SSLCACertificateFile /etc/apache2/ssl/your.ca-bundle
   SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
</VirtualHost>
</IfModule>

一旦一切都保存了下来,我就跑了

sudo a2ensite 001-john.conf

sudo a2ensite 001-john-ssl.conf

然后我就跑了

sudo service apache2 reload

然后检查它是否同时具有两者..以前没有..我只是创建了从 site-available 到 site-enabled 的链接..这对我来说似乎不起作用,但在使用标有 .conf 扩展名的文件运行 a2ensite 之后..我运行apachectl -t -D DUMP_VHOSTS并得到了这个结果:

VirtualHost configuration:
*:443                  is a NameVirtualHost
         default server mysite.com (/etc/apache2/sites-enabled/000-default-ssl.conf:2)
         port 443 namevhost mysite.com (/etc/apache2/sites-enabled/000-default-ssl.conf:2)
         port 443 namevhost john.mysite.com (/etc/apache2/sites-enabled/001-john-ssl.conf:2)
                 alias john.mysite.com
*:80                   is a NameVirtualHost
         default server mysite.com (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost mysite.com (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost john.mysite.com (/etc/apache2/sites-enabled/001-john.conf:1)
             alias john.mysite.com

**仅供参考...我的原始站点位于目录中/web/public,而子域站点位于/web/john...由于您的网站位于,/var/www/html我可能会使用类似/var/www/forum子域文件夹的东西来存储您的论坛文件,我会用forum.yoursite.com它作为ServerName和,ServerAlias但希望通过这个例子,你会看到所有内容的格式和设置。

一旦 DNS 记录从 namecheap 更新,我就可以访问 john.mysite.com,它会显示其中的简单“正在建设中”文件,如果我直接访问 www.mysite.com,它会给我显示一段时间前设置的正常页面

所以现在它正在与子域名合作

希望这能帮助您完成并正确设置..很可能是因为配置文件可能没有扩展.conf,而您没有a2ensite启用它们..这似乎是我遇到的问题

答案2

对于遇到同样问题的人,我有个提示:就我而言,向子域添加 SSL 证书解决了这个问题。我的主域在 SSL 上运行,显然所有 HTTP 流量都被重定向到主域上的 HTTPS。

相关内容