我可以将我的 .htaccess 配置添加到启用站点的虚拟主机 .conf 文件中吗?

我可以将我的 .htaccess 配置添加到启用站点的虚拟主机 .conf 文件中吗?

我了解到 httpd.conf 在 Apache 的 /etc/apache2 中不再可用。解决方法是创建一个 httpd.conf 文件,详细信息如下这里并将我的 apache2.conf 指向它。

但浏览 apache2.conf 时,我注意到了这一点:

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

这是否意味着我可以安全地将我的 .htaccess 配置添加到 /etc/apache2/sites-enabled/mysite.com.conf 的 .conf 文件中?

将服务器配置添加到 .htaccess 可能会降低速度,尤其是当你添加一堆配置时,如下所示这里,并且我想确保将它们添加到最谨慎的位置。

答案1

您应该在 中为您的站点创建一个 .conf 文件,/etc/apache2/conf-available/并将所有您不想要的服务器设置放入其中.htaccess。然后使用 启用该配置a2enconf(这将在 中创建一个符号链接) /etc/apache2/sites-enabled

了解/usr/share/doc/apache2/README.Debian.gz有关如何在 Debian 及其衍生产品(如 Ubuntu)中处理 Apache 配置的更多信息。

答案2

这取决于文件中使用的指令.htaccess

你不能简单地复制(或包括)相同的指令.htaccess,并在服务器或者虚拟主机上下文,这是这里建议的。.htaccess文件在目录上下文,因此您可以将它们逐字复制到<Directory>vHost 或服务器配置内的相应容器中。

这里值得注意的指令是 mod_rewrite - 在服务器(或者虚拟主机)上下文 vs .htaccess(或目录) 语境。

例如,如果.htaccess文件位于,/var/www/user/public_html/.htaccess那么您可以在 vHost 容器中使用以下内容:

<Directory /var/www/user/public_html>
    # Disable .htaccess overrides
    AllowOverride None

    # .htaccess directives go here...
    # :
</Directory>

但是,你可能不想这样做。最好修改指令,使它们在虚拟主机上下文。除非你完全禁用.htaccess覆盖(如上所述,并且AllowOverride None可能),否则文件系统路径上的AllowOverrideList任何文件都将.htaccess覆盖<Directory>vHost 中的容器。

添加服务器配置可能.htaccess会减慢速度

请注意,为了获得(边际)性能优势,您需要完全禁用.htaccess服务器配置中的覆盖(如上所述)。仅仅删除文件.htaccess是不够的,因为服务器仍会在请求的文件系统路径上的每个目录中搜索它们。

相关内容