假设我有一个包含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
文件中,如何考虑来自https
与http
以及www
与non-www
的用户网址?
我希望人们可以使用这种常见的策略,因为它应该相当普遍,所以我不必重新发明一个。
答案 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/