htaccess 与 httpd.conf 相比?

htaccess 与 httpd.conf 相比?

如果可以使用 httpd.conf,那么您就不应该使用 htaccess 文件吗?

Apache 网站称“一般来说,除非您无权访问主服务器配置文件,否则切勿使用 .htaccess 文件。”但我不知道这个建议有多久远,或者它是否仍然适用。

我正在开发一个大型网站,它只使用 httpd.conf 文件。但是它变得非常长,而且每次更改时都需要重新启动。而且由于主站点下运行着许多部门站点(并且都使用 httpd.conf 文件),因此很难进行更改。

现在我们也在运行 wordpress 3(在多站点配置中)。我想测试对配置规则的一些更改,但目前我能做到的唯一方法是继续重新启动 apache,而我不想在实时站点上这样做。(特别是重写规则似乎行为不当,一些博客文章前面加上了“www.”,而其他的则没有)

我正在考虑仅在 wordpress 文件夹上启用 .htaccess,但这明智吗?

我们的服务器很繁忙(根据谷歌的数据,每天大约有 6 万个页面浏览量),但负担并不太重。

当前的最佳做法是什么?服务器现在是否足够强大,以至于与 .htaccess 文件的易管理性相比,轻微的性能损失可以忽略不计?

答案1

但是它会变得很长,并且每次更改时当然都需要重新启动。

如果长度是一个问题,那么考虑分解配置部分并使用包括指令。正如其他人所说,可以使用以下命令重新加载 httpd 配置 ‘重新加载’或‘重新启动’,这应该可以减少对用户的干扰。您需要培训管理员使用“reload”或“graceful”,这说起来容易做起来难——许多人不知道这些命令,有些人不信任它们。

以下是 .htaccess 文件被视为恶意文件的一些原因:

  1. .htaccess 文件会引起混乱。我曾经接手过一个网站,该网站的整个目录层次结构中有超过 50 个 .htaccess 文件,这些文件是由数十位不同的人于 6 年前创建的。很难弄清楚任何特定目录的“服务器配置”,也很难弄清楚为什么某些功能在某些目录上不起作用。

  2. 安全性:任何可以写入 .htaccess 文件的用户都可以覆盖你在 httpd.conf 中精心设计的一些设置,除非你小心地使用以下命令限制可用选项:允许覆盖。 看何时(不)使用 .htaccess 文件了解更多信息。

  3. 审计:为主要 httpd.conf 和 Included 目录创建配置管理很容易。这提供了良好的审计线索,可以了解谁做了什么。当配置文件分布在整个目录层次结构中时,实现配置管理会更加困难。

  4. 失去控制:有人可能会创建 .htaccess 文件而不告诉您。假设有人在星期五下午 5 点创建了此文件,添加了一堆 mod_rewrite 规则,这些规则做了错误的操作并破坏了许多页面,然后这个人离开了,准备过周末。您直到星期一才发现问题。

当然,在某些情况下 .htaccess 文件是有意义的——如果只有少量的 .htaccess 文件,并且每个文件的用途都很容易理解。

答案2

.htaccess 文件的缺点是您必须在每次请求时加载该文件。因此这会增加开销。如果您的所有规则都在您的 conf 文件中,那么它们会在 apache 加载时加载,仅此而已。因此,如果您的网站需要读取的文件数减少了 60K。此外,任何可以预处理的规则都不会被预处理,这可能会导致响应延迟。如今,磁盘速度、处理器和内存都充足且快速,我认为对于大多数网站来说,这种影响几乎不明显。

正如 crimson_penguin 所说,让 apache 重新读取配置文件而不重新启动是有原因的。大多数操作系统使用命令reload而不是重新启动来执行此操作。如果使用 apache2ctl 命令,apache2ctl graceful您可以apache2ctl configtest先运行,以确保一切正常。当然,您需要以 root 身份运行它。

答案3

.htaccess 每次应用时都会被解析。这会给服务器增加一点不必要的负担。conf 文件仅在服务器加载或重新加载时才会被解析。

.htaccess 的使用取决于 conf 文件中启用的访问。

使用 .htaccess 会使管理员对安全性的控制力减弱,因为任何可以写入内容目录的用户都可以覆盖该目录的安全设置。(有些配置选项会限制此功能。)在许多系统上,Web 服务器本身可以写入内容目录,如果服务器受到攻击,则会增加潜在的损害。

用于apache2ctl graceful替代 Web 服务器的重新启动。如果您运行任何 HTTPS 服务,则可以配置 Web 服务器对 SSL 密钥的访问。

相关内容