之间有什么区别
RedirectPermanent
和RewriteRule
我遇到了一个代码
RewriteRule ^coaching/([^/]+)/?$ search_result.php?categoryName=$1 [NC,L]
另一个设置是
RedirectPermanent "/coaching/Run to live" http://www.example.com/coaching
前一条规则违反我的设定我也无法删除。
它输出就像这样
http://www.example.com/coaching?categoryName=Run%20to%20live
应该添加什么,以便在不更改第一个代码的情况下,我可以实现结果
http://www.example.com/coaching
答案 0 :(得分:2)
RewriteRule指令来自mod_rewrite,而RedirectPermanent指令来自mod_alias。
在这种情况下,他们不能很好地融合在一起。 RedirectPermanent使用原始URL / coaching / Run to live ,但看到由RewriteRule创建的修改后的查询字符串?categoryName = Run%20to%20live 。虽然这有点出乎意料,但是在每个目录(.htaccess)上下文中使用mod_rewrite和mod_alias是一件麻烦事。
因为无论如何你需要mod_rewrite原始的RewriteRule,最好的选择是使用RewriteRule而不是RedirectPermanent进行第二次操作。这看起来像这样:
# Perform this redirect first
RewriteRule "^coaching/Run to live$" http://www.example.com/coaching [R=301,L]
RewriteRule ^coaching/([^/]+)/?$ search_result.php?categoryName=$1 [NC,L]
答案 1 :(得分:1)
差异(在某些条件下)是使用RedirectPermanent HTTP响应是301(永久重定向) - 告诉浏览器/抓取工具页面已经永久移动... RewriteRule返回302(除非在选项中另有说明) - 这意味着浏览器此重定向是“临时的”,并且在将来的日期,此链接将再次提供所请求的内容。