.htaccess需要帮助

时间:2011-02-04 06:41:29

标签: apache .htaccess mod-rewrite

之间有什么区别

RedirectPermanentRewriteRule

我遇到了一个代码

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

2 个答案:

答案 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(除非在选项中另有说明) - 这意味着浏览器此重定向是“临时的”,并且在将来的日期,此链接将再次提供所请求的内容。

相关问题