很长一段时间以来,我一直使用RewriteRule
作为重定向命令。例如,我使用了这个:
RewriteRule ^some-page.html$ /new-page.html [R=301,L]
但最近我找到了其他方法,使用Redirect
关键字:
Redirect 301 /some-page.html /new-page.html
哪种方法更好,应该用作主要工具?
更好地被认为是:
答案 0 :(得分:3)
毫无疑问RewriteRule
将为您提供更好的服务,因为它具有正则表达式支持,并且在mod_rewrite
模块中提供了更多好东西。另一个是较早的mod_alias
模块,并且不支持许多重要的事情,例如:
RewriteCond
例如匹配查询字符串NE
,NC
,QSA
等广告。列表会很长,但所有说完了,你可以依靠mod_rewrite
为你提供更好的服务。
答案 1 :(得分:1)
我同意@anubhava,RewriteRule
作为一般工具更强大,更有用。但是,要回答你的具体情况,那就更好了。标准:
更稳定
没有任何内容。 Redirect
(mod_alias)已经存在了很长时间。 (?)
安全
同样,如果你知道自己在做什么,那么就不会有任何更安全的事情。"比另一个。 RewriteRule
更复杂,因此存在更多错误空间。但是,您应该警惕的一件事是,您不应该在同一个文件中一起使用Redirect
(mod_alias)和RewriteRule
(mod_rewrite)。它们属于不同的模块并在不同的时间执行。一起使用它们会产生意想不到的结果。
更快
有些人认为Redirect
更快。这简单得多。
社区'
更加认可
有争议的。这些天似乎会更多地使用RewriteRule
,但它会做得更多。许多人会使用它,因为这是他们一直使用的。 Apache文档建议如果您只是进行简单的重定向,那么首选mod_alias Redirect
:
您应该注意,您在上面发布的两条指令并不完全相同。 Redirect
是前缀匹配,匹配后的任何内容都会自动传递到目标URL。而在RewriteRule
中,您使用了锚点来明确标记URL的开头和结尾。