具有两个子目录的 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 虚拟主机配置的主要内容,如果未能解决你的问题,请参考以下文章