用于将用户转换到新网站的h​​taccess代码指南

时间:2015-02-24 22:32:06

标签: apache .htaccess

假设我有一个包含10个网页的旧网站,我想弃用它并将访问者移动到包含100个网页的新网站。

旧网站的两个网页直接映射到新网站上的两个相应网页。旧网站上的所有其他页面都应该转到新网站的主页。如何设置?

我知道我可以在旧网站的public_html文件夹中使用.htaccess为各个网页创建一些永久重定向规则。因此,对于需要一对一映射的两个页面,我可以这样做:

Redirect 301 /oldfile1.htm http://www.example.net/newfile1.htm
Redirect 301 /def/oldfile2.htm http://www.example.net/123/456/newfile2.htm

但旧网站上的所有其他网页呢?这是我对.htaccess缺乏知识的地方。当.htaccess到达上面的某个重定向时,它是否会停止执行?如果是这样,那么也许我只需将以下代码放在上面的代码中以捕获剩余的页面?

Redirect 301 / http://www.example.net/

或者,别的什么?此外,直接重定向会将它看到的所有网页映射到新网站的主页(我假设是这样),还是新网站上匹配的目录/网页页面? - 也就是说,我不希望http://www.olddomain.com/abc/Oldfile1234.html在新网站上将用户带到http://www.example.net/abc/Oldfile1234.html的情况(相反,它应该将用户带到http://www.example.net),因为大多数网页都会这样做不是一对一地映射。

最后,在旧网站public_html目录的.htaccess文件中,如何考虑来自httpshttp以及wwwnon-www的用户网址?

我希望人们可以使用这种常见的策略,因为它应该相当普遍,所以我不必重新发明一个。

1 个答案:

答案 0 :(得分:1)

您应该使用RedirectMatch使用正则表达式进行精确匹配。您可以将这些规则放在root .htaccess中:

RedirectMatch 301 ^/oldfile1\.htm$ http://www.example.net/newfile1.htm
RedirectMatch 301 ^/def/oldfile2\.htm$ http://www.example.net/123/456/newfile2.htm
RedirectMatch 301 ^ http://www.example.net/