How to make complete and good 301 redirect

From 清冽之泉
Jump to navigation Jump to search

有时,为了网址更短,我们往往会利用 .htaccess 实现改写网址。改写前的网址是 abcd.com/loooog/index.php/page.html,改写后的网址是 abcd.com/short/page.html,这样更美观,节约屏幕纵向空间。

在服务器内部实现改写后,会出现一个问题,那就是改写前后的两个网址都能正常访问,对搜索引擎来说不太友好,会抱怨有页面存在大量重复内容。即主观上改写前后是同一个页面,但对搜索引擎来说却是两个重复的页面,影响 SEO。

我的网站在服务器内部实现改写后,就遇到了这个问题:

一开始,我只认为是 http 没设置自动跳转 https 的 301 重定向。我设置了。观察了几天。

我发现 Bing Webmaster Tools 依然在抱怨 Too many pages with identicasl titles。我就继续观察,终于发现,对于搜索引擎来说,我的一篇文章,有 8 个不同网址:

1. http://长
2. http://短
3. http://www.长
4. http://www.短
5. https://长
6. https://短 (这是我唯一想要搜索引擎关注的)
7. https://www.长
8. https://www.短

8 个网址都被当成了重复的不同页面。

所以,要设置 301 重定向,必须把其他 7 个结果指向唯一想要搜索引擎关注的结果。

在 ChatGPT 的帮助下,通过以下步骤实现:

1. Redirect HTTP to HTTPS
2. Redirect non-canonical domains to canonical domains
3. Redirect /loooog/index.php/* to /short/*
4. Map /loooog/index.php to /short internally

这样就可以了,成功消除 Bing Webmaster Tools 的 Too many pages with identicasl titles 抱怨。

检验是否成功设置 301 跳转的方法:

# 测试的方法
curl -I http://your-test-url
# 返回的结果
HTTP/1.1 301 Moved Permanently