本文由谷优SEO 北京整站优化顾问团队整理,转载请著名链接!
经常会遇到一次又一次需要移动页面位置、改变名字、甚至搬到完全不同的域名。在这种情况下,你要确保用户和搜索引擎知道新的位置。你可以用mod_rewrite,直接从服务器请求重定位旧的网址,来完成301重定向。在搜索引擎看来,它没有META刷新的负面影响,所以不用担心会被误认为是垃圾邮件发送者。当搜索引擎收到301重定向时,它们会自动更新自己的记录,用新的网址来取代旧的。
试想,我们已经更新了联系网页,之前它只是带有典型的联系信息的HTML,但现在我们绝对增加PHP联络表,使用户可以更方便地与组织联系。要做到这一点,需要将页面的扩展名从.html改为.php,这样服务器就可以通过PHP引擎来运行网页。最好自动将新位置发送给用户,万一用户想访问已不存在的旧的HTML页面。要做到这一点,将下面的代码添加到服务器上的.htaccess中:
# Rediret to new contact page
RewriteEngine on
RewriteRule ^contact.html(.*)$/contact.php[L,r=301]
如果你的文档中已经有另一种重写规则,那么你就不需要再次启动重写引擎,就象第二行中所显示的。注意,你可以通过在评论前加#,对.htaccess文件进行评论。最后一行只是寻找任何指向Web根目录中contact.html的网址,并发送301HTTP响应,重定位请求到contact.php。
如果你正在移到全新的域名,相同的方法也是同样有用的。虽然代码有点冗长,但想法是相同的:
RewriteEngine on
RewrieCond %{HTTP_HOST}^(WWW\.)?old-site\.com$[NC]
RewriteRule ^(.*)$ h ttp://www.new-site.com/$1 [R=301,L]
在启用重写引擎后,将设置一个条件来寻找包含或不包含WWW的域名,不管大小写。接下来,请求将重新定位到新域名,包括前缀www和可能已输入作为原始请求的尾巴路径。记住这是建立在新的域和旧的拥有相同的目录和文件结构的假设上。
使用301重定向将有助于确保旧域在搜索引擎排名转移到新的域上,但要知道重定向会放慢用户体验和Apache,因为除了服务请求文件外,还有额外的查找任务。大多数情况下,不是很容易被察觉到,但对高流量网站,重定向可引起明显的服务器性能减速。记住,尽量将301重定向的使用降低到最低程度,只用在简单的任务上,如果正改变后的目录结构、档案名称或域名。
在网站变化时,有些前瞻性的思考,可帮你避免做大量的重定位工作。如果网站上许多必须从HTML改到PHP,而不是改变文件扩展名,那么你可能迫使Apache通过PHP引擎来运行所有HTML文件。采用这种办法,所有现存的文件扩展名都可以保持不变。你可以在.htaccess文件中改变Apache的配置,如下:
AddType application/x-httpd-php.php.html
这行简单的代码告诉服务器,所有用.php或.html扩展名的文档都必须通过PHP解析引擎来运行。或者,你也可以不包含文档的扩展名,这样将来旧可以灵活地让服务器将它们作为纯HTML传递或通过PHP解析引擎来运行。管理上可能会更繁琐一点,因为你需要告诉Apache匿名文件用的是什么文件类型。你可以通过在htaccess文件中用ForceType。当你在开发应用中建立文件时,没有扩展名会比较麻烦,因为它们可能不显示颜色编码、代码提示还有软件提供的其它功能,它们都依赖于知道文件类型的基础上。