具有两个子目录的 apache2 虚拟主机配置

Posted

技术标签:

【中文标题】具有两个子目录的 apache2 虚拟主机配置【英文标题】:apache2 virtualhost configuration with two subdirectories 【发布时间】:2014-10-14 01:10:58 【问题描述】:

我在 Ubuntu 14.04 服务器上运行 Apache 2.4。它的目的是一个邮件服务器,所以它上面有 postfix、dovecot 和 roundcube(以及其他东西)。我正在尝试配置 Apache 以提供我想要的页面,但失败了。

我已安装 SSL 证书并且工作正常。我想强制通过 HTTPS 进行所有访问,所以我有:

<VirtualHost *:80>
    Redirect / https://mailserver.hni.ae/
</VirtualHost>

要提供的两组文件都在/var/www/html 下,第一组是/var/www/html/A,另一组是/var/www/html/B(比方说)。我已将我的/etc/apache2/sites-available/000-default.conf(有一个指向./sites-enabled 的符号链接)配置为:

<VirtualHost *:443>
    SSLEngine On
    SSLCertificateFile      /etc/ssl/private/mycert.crt
    SSLCertificateKeyFile   /etc/ssl/private/mycert.key

    ServerAdmin webmaster@mydomain.com
    ServerName www.mydomain.com
    DocumentRoot /var/www/html/
    DirectoryIndex index.php

    <Directory /var/www/html/A>
      Options FollowSymLinks
      AllowOverride None
      Order Allow,Deny
      Allow from all
    </Directory>

    <Directory /var/www/html/B>
      Options FollowSymLinks
       AllowOverride None
       Order Deny,Allow
       Deny from All
       Allow from 192.168.1.1
    </Directory>

    LogLevel warn
    ErrorLog $APACHE_LOG_DIR/error.log
    CustomLog $APACHE_LOG_DIR/access.log combined
</VirtualHost>

这行得通。我可以转到www.mydomain.com/B,它为这些页面提供登录页面(仅当我从指定的 IP 地址访问时),www.mydomain.com/A 并从应用 A 登录页面。

我的问题:我希望能够转到www.mydomain.com/C 并且只是简单的www.mydomain.com 并被重定向到www.mydomain.com/A 但是当我使用Redirect ... 时,服务器进入循环并尝试服务www.mydomain.com/AAAAAAA... .我怀疑我应该使用RedirectMatch temp ^/$... 指令,但也不能让它工作。也许与Redirect:80:443 发生冲突有关?因为我使用的是AllowOverride None,所以没有涉及.htaccess

我已经彻底阅读了 Apache 2.4 文档,但就是不明白。有什么建议吗?

【问题讨论】:

【参考方案1】:

您可以使用RewriteRule。将此添加到您的 VirtualHost:

RewriteEngine On
RewriteRule ^/(C/?|)$ /A [R,L]

确保mod_rewrite 也已启用。

说明: 正则表达式 ^/(C/?|)$ 将匹配 /C 可选地后跟 /,或者只是 / 即 www.mydomain.com 的根

【讨论】:

效果很好@arco444,谢谢!是时候在 apache.org 上阅读此内容了,以便我了解它是如何工作的 :) 感谢! 没问题,满意请采纳!

以上是关于具有两个子目录的 apache2 虚拟主机配置的主要内容,如果未能解决你的问题,请参考以下文章

apache2.2 和 2.4 虚拟主机配置文件

Apache2.4.11 虚拟主机配置不工作

Apache2:启用的虚拟主机目录未加载,而是获取默认页面

apache2.4 虚拟主机配置

apache2.4.X虚拟主机配置

虚拟主机显示目录结构