重定向到 Apache 虚拟主机文件中的子文件夹

Posted

技术标签:

【中文标题】重定向到 Apache 虚拟主机文件中的子文件夹【英文标题】:Redirect to a subfolder in Apache virtual host file 【发布时间】:2013-10-04 00:33:25 【问题描述】:

我在运行 Ubuntu Server 12.04 的网络服务器上安装了 Joomla。 Joomla 文件夹位于 /var/www/cms/。

我在 /etc/apache2/sites-enabled/default 的 vhost 文件有以下内容:

<VirtualHost *:80>
    ServerName domain.com/
    Redirect permanent / https://domain.com/
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName domain.com:443

    DocumentRoot /var/www/cms
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/cms>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    (...)
</VirtualHost> 

目前,对 domain.com 的所有请求以及在此之后输入的任何内容(如 domain.com/example)都由 Joomla 定向和处理,Joomla 要么重定向到正确的页面,要么返回自定义 404 错误。这一切都有效。

现在,我想在 Joomla 处理之前过滤所有转到 domain.com/subfolder 的请求,并将它们重定向到 /var/www/subfolder(而不是我在 /var/www/cms 的根文件夹/)。

我相信 /etc/apache2/sites-enabled/default 中的文件(如上所示)是定义此类重定向的正确位置,但是我无法弄清楚在什么位置以及如何实现这一点。

【问题讨论】:

您是否尝试过使用别名? @MasterAM 这就是我所缺少的。谢谢! Alias /subfolder /var/www/subfolder Options +Indexes AllowOverride All 解决了问题! 尝试将以下内容添加到感兴趣目录上方父目录中的.htaccessRedirectMatch ^/foo/$ /foo/bar/RedirectMatch ^/foo/$ /bar/baz/。另请参阅How to get apache2 to redirect to a subdirectory。 【参考方案1】:

您应该添加到您的配置中:

Alias /subfolder /var/www/subfolder
<Directory /var/www/subfolder>
    Order allow,deny
    allow from all
</Directory>

并根据您的需要调整“目录”之间的配置。

查看Apache documentation了解更多信息。

【讨论】:

以上是关于重定向到 Apache 虚拟主机文件中的子文件夹的主要内容,如果未能解决你的问题,请参考以下文章

通过将主机名放在主机文件中来加速 Apache 重定向

Apache vhost 重定向到另一个 vhost

apache 将 http 重定向到 https 而不使用 www

在 apache 虚拟主机中重定向和隐藏端口(文件夹) - xwiki

.htaccess 将动态域重定向到文件夹

apache中的文件夹重定向