来自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文件中重定向页面的大量列表,所以任何帮助都会感激不尽。
答案 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