mod_rewrite:首选目录上下文的服务器上下文?

时间:2009-12-09 13:52:17

标签: mod-rewrite

在我正在使用的产品中,我在应用程序根目录下找到了一个.htaccess文件,它基本上将对不存在文件的请求重写为中央处理脚本。

出于性能原因,我现在想将该规则移到我的服务器(虚拟主机)配置中。

最简单的方法是将规则简单地复制到<Directory>部分,因为它们被解释为.htaccess上下文,对吧?嗯 - 它有效。

我是否可以从修改规则并将它们移动到服务器/顶层上下文而不是目录上下文中获益?

编辑:我似乎不太清楚。通过'目录上下文',我 NOT 表示.htaccess文件,但是我的服务器配置文件中有<Directory>部分。

2 个答案:

答案 0 :(得分:0)

服务器配置文件仅在服务器启动时读取并解析一次。但每次请求完成时都会读取和解析.htaccess文件。此外,在读取所请求文件所在目录的过程中,任何.htaccess文件都会被解析。如果你有这样的结构:

htdocs/
  foo/
    .htaccess
    bar/
      .htaccess
      baz/
        .htaccess
        somefile.html

并且您将请求/foo/bar/baz/somefile.html,所有.htaccess文件将解析和解析文件层次结构到somefile.html。现在你可以自己想象一下这是不是开销。

答案 1 :(得分:0)

这是一篇有趣的博文:

http://www.fubra.com/blog/2008/01/htaccess-vs-httpdconf/

似乎他们得出结论,在httpd.conf

中使用规则的速度只有6.6%

因此,您可以获得一些性能提升,但您也可以灵活地更改每个目录的规则或不重新启动服务器。