在 apache2.conf 中包含 .htaccess 并带有“AllowOverride None”会减慢 Apache?

Posted

技术标签:

【中文标题】在 apache2.conf 中包含 .htaccess 并带有“AllowOverride None”会减慢 Apache?【英文标题】:Including .htaccess in apache2.conf with 'AllowOverride None' slows down Apache? 【发布时间】:2014-08-05 13:30:30 【问题描述】:

如果您有权访问主服务器配置文件(通常称为httpd.conf),则应将.htaccess 文件中的逻辑添加到主配置文件中的<Directory> 部分中。这通常是推荐的方式,因为使用 .htaccess 文件会降低 Apache 的速度! (Source)

我认为这基本上意味着,如果可能的话,我应该在 /etc/apache2/apache2.conf 中使用 Include httpd.confAllowOverride None 指令。

但除了语义(或其他),为什么我不能简单地包含 .htaccess 本身?为了我的方便,我这样做......

文件: /etc/apache2/apache2.conf

#
# [... ORIGINAL CONTENTS OF APACHE2.CONF ...]
#


<Directory /var/www/example.com/public>
    DirectoryIndex index.php index.html
    AllowOverride None
    Include /var/www/example.com/public/.htaccess
</Directory>

使用apache2.conf 中包含的.htaccess 文件和AllowOverride None 指令,我可以在/var/www/example.com/public/.htaccess 中简单地添加我网站的所有重写规则。

如果需要为另一个子目录使用另一个 .htaccess 文件,我只需在 apache2.conf 中为新的 .htaccess 文件添加另一个 Include,就像我现在做的那样。

我的问题是,这是否与使用 httpd.conf 一样高效? (我相信I was told otherwise here,这就是我问的原因。)如果不是,为什么不呢?


我更喜欢使用 .htaccess 的原因: 我的服务器运行 WordPress,并且我使用的一些 WordPress 插件(SEO、缓存等)在 .htaccess 文件中添加了重写规则。通过使用 .htaccess,我不必自己手动执行此操作,并且可以简单地让插件完成它们的工作。

【问题讨论】:

【参考方案1】:

是的,它与直接放在 httpd.conf 中的运行时性能相同。操作部分是在启动时解析它,而不是在将请求映射到文件系统并检查 htaccess 并每次解释它时。

【讨论】:

以上是关于在 apache2.conf 中包含 .htaccess 并带有“AllowOverride None”会减慢 Apache?的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu14.04配置文件Apache2.conf

debian下的apache2的配置文件apache2.conf缺失语句?

mod_rewrite 适用于 .htaccess 文件,但不适用于 apache2.conf

使用sed替换apache2.conf文件中的代码块内的文本

AH00526:/etc/apache2/apache2.conf 第 74 行的语法错误:参数文件中的 Mutex 目录无效:$APACHE_LOCK_DIR

Debian 8 apache2