How to make complete and good 301 redirect
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