我在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文档但是无法弄清楚。有什么建议吗?
答案 0 :(得分:1)
您可以使用RewriteRule
。将其添加到您的VirtualHost:
RewriteEngine On
RewriteRule ^/(C/?|)$ /A [R,L]
确保同时启用mod_rewrite
。
说明:
正则表达式^/(C/?|)$
将匹配/C
,可选地后跟/
,或仅/
,即www.mydomain.com的根