带有两个子目录的apache2虚拟主机configuration

我在Ubuntu 14.04服务器上运行Apache 2.4。 它的目的是一个邮件服务器,所以它有后缀,d​​ovecot和roundcube(等等)。 我正在尝试和失败,将Apacheconfiguration为提供我想要的页面。

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

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

这两组文件都在/var/www/html ,第一个是/var/www/html/A ,另一个是/var/www/html/B (比方说)。 我已经configuration了/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 ,它为这些页面提供login页面(只有当我从指定的IP地址访问时)和www.mydomain.com/Alogin到应用程序A的页面。

我的问题:我想能够去www.mydomain.com/C ,只是明确www.mydomain.comredirectwww.mydomain.com/A但是当我使用Redirect ...服务器进入循环,并尝试服务www.mydomain.com/AAAAAAA... 我怀疑我应该使用RedirectMatch temp ^/$...指令,但不能让它工作。 也许与Redirect有关:80:443冲突? 没有使用.htaccess因为我使用AllowOverride None

我已经阅读了Apache 2.4的文档,但只是无法弄清楚。 有什么build议么?

你可以使用RewriteRule 。 添加到你的VirtualHost:

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

确保mod_rewrite也被启用。

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