mod_rewrite 还是 mod_alias?

Posted

技术标签:

【中文标题】mod_rewrite 还是 mod_alias?【英文标题】:mod_rewrite or 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 规则 【参考方案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。

【讨论】:

以上是关于mod_rewrite 还是 mod_alias?的主要内容,如果未能解决你的问题,请参考以下文章

Apache mod_alias RedirectMatch 除特定模式外的所有内容

mod_rewrite:重写规则还是重定向?

mod_rewrite 规则可以修改 PHP 中的 require_once 指令吗?

<IfModule mod_rewrite.c> 中的 RewriteEngine 每次都打开?

apache配置伪静态Rewrite

如何使用 mod_rewrite 伪造路径?基本上如何使用 mod_rewrite 在特定的 url 路径上提供平面文件?