mod_rewrite条目的适当位置在哪里?

时间:2010-10-17 17:24:31

标签: apache mod-rewrite

对于上帝的爱,我似乎无法让这个mod_rewrite正常工作。让我在这里问一下,而不是做暴力反复试验。

  1. 我希望mod_rewrite规则适用于所有域。
  2. 我想要httpd.conf
  3. 中的mod_rewrite条目
  4. 我想摆脱这种WWW病毒(出于搜索引擎优化的目的):

    http://www.example.com> http://example.com

  5. 我想摆脱index.html(对于搜索引擎优化,谷歌索引它而不仅仅是域名):

    http://www.example.com/index.html> http://example.com

    http://www.example.com/some/index.html> http://example.com/some/index.html

  6. 域位于<virtualhost>个条目中。我无法弄清楚在哪里或哪个应该优先考虑。正如我所提到的,我想将这两个规则应用于服务器中的所有域。

    ssl.conf加剧了这种情况。是否所有这些都需要输入ssl.conf?当有2个重定向时会发生什么:

    http://www.example.com/index.html > http://example.com/index.html > http://example.com
    

    非常感谢你。这很快变得如此令人困惑。

    玛利亚

1 个答案:

答案 0 :(得分:0)

这解决了我。正如我所怀疑的,在应用重写的过程中存在很大差异。包括卑鄙在内的许多人似乎都没有意识到这一点。

http://wiki.apache.org/httpd/RewriteContext

Apache HTTPD Server处理离散阶段的请求。虽然这通常对用户和管理员是透明的,但当规则集放置在不同的上下文中时,它确实会影响mod_rewrite的行为。为了过度简化,当规则被放置在VirtualHost块(或主服务器上下文中)时,它们会在服务器将请求的URI映射到文件系统路径之前进行评估。相反,当规则放在.htaccess文件中或主服务器配置中的目录块中时,它们会在此阶段发生后进行评估。