使用别名时的 Apache VirtualHost 混淆

Posted

技术标签:

【中文标题】使用别名时的 Apache VirtualHost 混淆【英文标题】:Apache VirtualHost confusion when using alias 【发布时间】:2018-05-22 15:17:54 【问题描述】:

所以我有一个如下所示的设置:

www.mydomain.com - 运行复杂的多站点 Wordpress 安装 www.mydomain.com/othersite - 由于各种原因,这需要运行完全独立的 Wordpress 安装,但由于历史原因,URL 必须采用这种格式。

我希望 WP 的“其他站点”安装不必位于主多站点安装的目录中,例如 /var/www/main-多站点 /var/www/othersite 而不是 /var/www/main-multisite/othersite

我的理解是我无法为其他站点创建单独的虚拟主机,所以我在主虚拟主机中创建了一个别名:

Alias /othersite /var/www/othersite

但是,这样做时,/var/www/othersite 中的 .htaccess 文件似乎被忽略了 - 我首先注意到这一点,因为 Wordpress 中的永久链接不起作用。我尝试将其他指令添加到 .htaccess 中,但没有任何作用……所以我将乱码放入 .htaccess 以尝试引发错误……但这并没有发生。所以这证实了我认为 .htaccess 被忽略了。

但是,如果我从虚拟主机中删除别名,然后移动一些东西,我们就有了

/var/www/main-multisite/other

一切正常,文件夹中的 .htaccess 也正常!但这不是我想要的。

谁能帮我解释一下我在这里遗漏了什么?

提前致谢。

【问题讨论】:

您是否在 apache 配置中添加了 块并将 AllowOverride 设置为 all? 不!现在调查这些...谢谢。 这是实际路径。 AllowOverride All 已插入并且看起来可以正常工作 - 非常感谢!还有什么我应该添加到目录块的东西吗? 如果您允许公开访问,您可能还需要设置Order allow,denyAllow from all 【参考方案1】:

设置Alias 后,您应该设置要应用于目录的指令组。您应该在 apache 配置中添加 <Directory> 指令。默认配置 AllowOverride None 将完全忽略目录上的 .htaccess。您还应该检查documentation 关于<Directory> 指令的信息。

<Directory "/var/www/othersite">
    Options FollowSymLinks Includes
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

【讨论】:

以上是关于使用别名时的 Apache VirtualHost 混淆的主要内容,如果未能解决你的问题,请参考以下文章

虚拟主机中的 Apache HTTPD 别名和目录

Apache2指令通过VirtualHost容器与xampp冲突

为别名配置 Apache .conf [关闭]

为端口创建别名

本地主机别名不适用于 XAMPP

为啥 localhost 有效但我的别名无效?