2016-09-15 64 views
1

我是这个社区的新手,虽然听说了很多。所以,我今天在这里得到解决我的关于重定向301和301 redirectmatch重定向vs RedirectMatch

我试图使用重定向404重定向页面301类似的东西

Redirect 301 /part1-url http://domain.com/part1-url/part2-url/part3-url.html 

此规则曾作为查询之一一个恶梦,我的目标URL开始后失常和/part2-url/part3-url.html重复串获得追加到我的detination URL成为像 -

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

格式指导http://stackoverflow.com/editing-help – Ejaz

回答

4

Redirect应该重定向开始以字符串所有URL 。由于您重定向到的URL以该字符串开头,因此您自然会立即重新定向。

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

+0

感谢您的解释。虽然,我重定向了一个其他URL,但其中有匹配的起始位置作为目标网址,但它在Redirect 301中运行正常。源URL重定向 - http://www.mcraeeng.com/clark-reliance-water \t 目标URL - http ://www.mcraeeng.com/clark-reliance-water-columns/boiler-trim/products.html – user6835554

1

来自Apache。

重定向:

重定向指令通过询问 客户在新的位置重新获取资源映射旧网址进入一个新的。

旧的URL路径是一个以 斜杠开始的区分大小写(%解码)路径。相对路径是不允许的。

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

然后以URL-path开头的任何请求都会返回一个重定向 请求到目标URL位置的客户端。其他 超出匹配的URL路径的路径信息将被追加到 目标URL。

来源:Apache Redirect

RedirectMatch

该指令相当于重定向,但是利用正则表达式,而不是简单的前缀匹配。提供的正则表达式与URL路径相匹配,如果匹配,服务器会将所有带括号的匹配项替换为给定的字符串,并将其用作文件名。

来源:Apache RedirectMatch