重定向与RedirectMatch

时间:2016-09-15 14:04:04

标签: php apache .htaccess url-redirection http-redirect

我是这个社区的新手虽然听过很多关于它的信息。所以,我今天在这里为我的一个关于重定向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

它开始正常工作。

我无法理解为什么会这样,以及第二个如何运作。

我真的很感谢你的帮助。

2 个答案:

答案 0 :(得分:7)

Redirect 假设重定向以字符串开头的所有网址。由于您重定向到的URL以该字符串开头,因此您很快就会立即重定向。

RedirectMatch重定向与正则表达式匹配的网址。您使用$显式匹配URL的末尾作为其中的一部分。这意味着“从......开始”是不够的。

答案 1 :(得分:3)

取自Apache。

重定向:

  

Redirect指令通过询问将旧URL映射到新URL   客户端在新位置重新获取资源。

     

旧的URL路径是区分大小写(%-decoded)的路径,以a开头   削减。不允许使用相对路径。

     

新网址可以是以方案开头的绝对网址   主机名,或以斜杠开头的URL路径。在后一种情况下   将添加当前服务器的方案和主机名。

     

然后以URL路径开头的任何请求都将返回重定向   请求客户端在目标URL的位置。额外   超出匹配的URL路径的路径信息将附加到   目标网址。

来源:Apache Redirect

RedirectMatch

  

此指令等效于Redirect,但使用正则表达式,而不是简单的前缀匹配。提供的正则表达式与URL路径匹配,如果匹配,服务器将把任何带括号的匹配替换为给定的字符串,并将其用作文件名。

来源:Apache RedirectMatch