使用mod_alias重定向文件夹时出现问题

时间:2009-12-25 11:42:29

标签: .htaccess directory http-status-code-301 mod-alias

来自this thread的另一个问题。我无法解决的唯一剩余项目是现在存在一个不存在的文件夹'/ team /'的列表,但如果我将其添加到我的.htaccess文件中,它会破坏所有其他.htaccess条目中的文件那个文件夹,即

redirect 301 /team/ /team.html
redirect 301 /team/joe_bloggs.htm /team.html
redirect 301 /team/joe_bloggs.html /team.html
redirect 301 /team/bill_smith.htm /team.html
redirect 301 /team/bill_smith.html /team.html

如果我然后尝试访问/team/joe_bloggs.htm,它会带我去

/team.html/joe_bloggs.htm

如果我能解决这个问题,它可以帮助我理解如何解决我的原始问题并减少我的.htaccess文件中重定向页面的大量列表,所以任何帮助都会感激不尽。

2 个答案:

答案 0 :(得分:1)

您需要更改顺序,并在结尾添加“redirect 301 /team/ /team.html”。 它逐行读取,如果找到适合的东西,它会替换它。

此外,我认为你需要学习添加,^和$字符。 ^表示,表达式应该开始,$表示表达式应该结束。 因此,^/team/$表示它应该是/ team /并且它不匹配/team/joe_bloggs.htm

答案 1 :(得分:0)

Redirect directive适用于路径前缀。在这种情况下,第一个指令(/team/)中使用的路径前缀匹配,路径的其余部分将附加到新的URL路径。

  

[...]以 URL-Path 开头的任何请求都会在目标 URL 的位置向客户端返回重定向请求。匹配的 URL-Path 之外的其他路径信息将附加到目标 URL

请尝试RedirectMatch

RedirectMatch 301 ^/team/ /team.html