apache2 virtualhost配置有两个子目录

时间:2014-08-20 15:30:26

标签: apache redirect virtualhost

我在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有关?我没有.htaccess使用AllowOverride None

我已经彻底阅读了Apache 2.4文档但是无法弄清楚。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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

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

确保同时启用mod_rewrite

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