我是这个社区的新手虽然听过很多关于它的信息。所以,我今天在这里为我的一个关于重定向301和redirectmatch 301的查询提供解决方案。
我尝试使用Redirect 301重定向404页面
Redirect 301 /part1-url http://domain.com/part1-url/part2-url/part3-url.html
此规则起到了噩梦的作用,我的目标网址随后开始行为不端,并且/part2-url/part3-url.html
的重复字符串会附加到我的去除网址上,这就像 -
http:// domain.com/part1-url/part2-url/part3-url.html/part2-url/part3-url.html/part2-url/part3-url.html/part2-url/part3-url.html/part2-url/part3-url.html/part2-url&id=part3-url.html&var=part2-url&var2=part3-url
然后我按如下方式使用RedirectMatch:
RedirectMatch 301 ^/part1-url$ http:// domain.com/part1-url/part2-url/part3-url.html
它开始正常工作。
我无法理解为什么会这样,以及第二个如何运作。
我真的很感谢你的帮助。
答案 0 :(得分:7)
Redirect
假设重定向以字符串开头的所有网址。由于您重定向到的URL以该字符串开头,因此您很快就会立即重定向。
RedirectMatch
重定向与正则表达式匹配的网址。您使用$
显式匹配URL的末尾作为其中的一部分。这意味着“从......开始”是不够的。
答案 1 :(得分:3)
取自Apache。
重定向:
Redirect指令通过询问将旧URL映射到新URL 客户端在新位置重新获取资源。
旧的URL路径是区分大小写(%-decoded)的路径,以a开头 削减。不允许使用相对路径。
新网址可以是以方案开头的绝对网址 主机名,或以斜杠开头的URL路径。在后一种情况下 将添加当前服务器的方案和主机名。
然后以URL路径开头的任何请求都将返回重定向 请求客户端在目标URL的位置。额外 超出匹配的URL路径的路径信息将附加到 目标网址。
RedirectMatch
此指令等效于Redirect,但使用正则表达式,而不是简单的前缀匹配。提供的正则表达式与URL路径匹配,如果匹配,服务器将把任何带括号的匹配替换为给定的字符串,并将其用作文件名。