5

我现在需要做一个 url 重写工作。

我不知道是否应该将代码放入 .htaccess 或 httpd.conf 中?

编辑

.htaccess 的影响范围是多少?它会影响所有请求还是只影响对其所在特定目录的请求?

4

4 回答 4

10

如果您不必经常更改规则,则应将它们放在 httpd.conf 中并在您的规则适用的顶级目录中关闭覆盖

AllowOverride None

如果没有覆盖,您的 apache 将不会扫描每个目录中的 .htaccess 文件,从而减少每个请求的开销。

每当您确实必须更改规则时,如果将其放入 httpd.conf 中,则必须重新启动 apache 服务器,而不是在 .htaccess 文件中立即检测到它们,因为它会在每次请求时都读取它们。

您可以使用 apachectl 工具优雅地重新启动来轻松完成此操作,以避免切断任何当前正在服务的请求。

apachectl graceful

如果您不打算关闭覆盖,您不妨只使用 .htaccess 。

编辑以响应您的编辑:

假设您有 www.example.com/dir1/dir2/dir3/file 的请求

如果您允许覆盖,Apache 将在所有 3 个目录中查找 .htaccess 文件以及应用于请求的规则的根目录。

于 2009-11-11T06:14:09.003 回答
3

易于使用和 IMO 可维护性(只需以任何许可用户的身份转到您想要的目录)=.htaccess但这会被重复解析,而不是httpd.conf在您的超大容量最好设置的地方解析一次。

于 2009-11-11T06:01:58.680 回答
1

就哪个“更好”而言,这里有三个问题:

  • 表现
  • 管理
  • 安全

.htaccess 更慢,更难管理,并且可能更不安全。如果您可以访问 httpd.conf,那么在其中放置规则可以更容易管理(在一个地方),更快(“AllowOverrides None”意味着服务器不会在当前目录和任何父目录中查找覆盖文件解析和跟踪),并且由于网站目录中不存在 .htaccess 文件,因此无法编辑它们(如果创建,将被忽略)。

于 2016-12-01T05:06:54.703 回答
0

你可以同时使用它们。恕我直言,.htaccess 会好一点

于 2009-11-11T06:04:23.870 回答