【问题标题】:mod_rewrite or mod_alias?mod_rewrite 还是 mod_alias?
【发布时间】:2010-10-22 22:07:59
【问题描述】:

我有一个服务器,它的 httpd.conf 中已经有一些“RedirectMatch Permanent”指令。

我对 mod_alias 不是很熟悉,我只用过 mod_rewrite。

有什么基本区别?我在 mod_alias 中没有看到用于停止处理规则的“L”标志。

对于从一个子域重定向到另一个子域的最佳实践,我应该使用哪一个?

我可以同时使用两者吗?哪个优先?

【问题讨论】:

  • 我最后发现mod_rewrite更强大,是mod_alias的超集。我能够在同一个 httpd.conf 文件中成功使用 mod_alias 和 mod_rewrite 规则

标签: apache mod-rewrite redirect httpd.conf mod-alias


【解决方案1】:

mod_alias 基本上是 mod_rewrite 的更简单版本。它不能做一些 mod_rewrite 可以做的事情,比如操纵查询字符串。如果您可以选择其中任何一个,我看不出您有任何理由要使用 mod_alias。

您是否有特定原因需要尝试同时使用两者?

Apache mod_rewrite & mod_alias tricks you should know 似乎是一篇关于两者的好文章。它曾指出 mod_rewrite 规则在 mod_alias 规则之前执行。

【讨论】:

  • 我想同时使用两者的唯一原因是,现有大约 30 条使用 mod_alias 的规则。我已经编写了自己想要添加的 mod_rewrite 规则,并且我不想在 mod_rewrite 中重新创建现有规则。
  • "mod_rewrite 规则在 mod_alias 规则之前执行。" - 希望 gem 出现在 apache 文档中。在我的设置中同时使用重写和别名;这正是我现在观察到的。
  • 官方文档:“mod_rewrite 应该被视为最后的手段,当发现需要其他替代方案时。在有更简单的替代方案时使用它会导致配置混乱、脆弱且难以维护。” When not to use mod_rewrite。 – 使用最强大的系统可以简化决策,但通常不是获得良好可维护性的最佳方法。为 mod_alias 跳过 mod_rewrite 有充分的理由。 mod_alias 应该是首选。
【解决方案2】:

正如公认的答案所说:mod_rewrite 可以做mod_alias 不能做的事情。不过mod_alias 的主要好处是更易于使用。

apache 文档说我们应该将mod_alias 用于重定向等简单的事情,而mod_rewrite 仅用于我们无法使用mod_alias 等更简单的模块做的事情。查看文档:When not to use mod_rewrite

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 2011-08-14
    • 2012-06-01
    • 2011-10-16
    • 2011-03-08
    相关资源
    最近更新 更多