修改.htaccess实现301重定向

我的偶笑论坛已经开了快两个月了,感觉对于搜索引擎很不友好,有一点就是链接不统一,由于discuz的后台没有设置将有带www和没带www中的哪一个做为主网站的功能,所以我就直接动手了,刚刚修改偶笑论坛的.htaccess文件,终于实现了将所有oxiao.com的链接直接跳转到www.oxiao.com的链接了,当然现在地址统一对于搜索引擎来说将会是非常有用的,我也不用担心我这个论坛对于搜索引擎不好了。我所用的bluehost的cpanel里面也可以直接修改,不过经过我的测试好像不行,只能跳转从http://oxiao.com/http://www.oxiao.com/,其它的子链接不行。所以只有自己手动修改.htaccess,刚开始按照网上的说明修改,还是感觉不行,最后发现,原来这个添加是有顺序讲究的,所以大家以后在修改.htaccess的时候,如果发现不行,可以试着改变下顺序。下面为偶笑论坛的.htaccess里面的内容

# Use PHP5CGI as default
AddHandler fcgid-script .php
# 将 RewriteEngine 模式打开
RewriteEngine On

# 修改以下语句中的 /discuz 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
RewriteBase /

# Rewrite 系统规则请勿修改

RewriteCond %{HTTP_HOST} !^www.oxiao.com$ [NC]
RewriteRule ^(.*)$ http://www.oxiao.com/$1 [L,R=301]
RewriteRule ^archiver/((fid|tid)-[\w\-]+\.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2
RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2
RewriteRule ^tag-(.+)\.html$ tag.php?name=$1

下面再转一篇不错的文章给大家看下,我就是按照下面这个来修改的。
VIA

出于SEO、PR值传递、网址转换的目的,在网站初建和网站迁移时我们都需要使用301重定向,通常包括域名对域名,目录对目录和一个独立网址对另一个独立网址的重定向。在bluehost虚拟主机上作301重定向,最常用的方法有2种:
1.直接编辑.htaccess。
2.用cPanel设定。
实质二者都是修改文件.htaccess,只是前者手工编辑,后者是由cPanel完成。用cPanel操作相当简单,登陆你的 cPanel(bluehost虚拟主机可以选简体中文)–>Domain–>Redirects,选择相应的选项即可完成设置,这里暂不讨论。下面讲一下直接编辑.htaccess的方法。
注意:在设置301重定向之前务必备份相应目录下的.htaccess文件。
1.重定向domain.com到www.domain.com
这种重定向旨在使域名唯一,是网站SEO必须要做的,后面重定向www.domain.com到domain.com也是出于同样的原因,只是形式不同。
打开.htaccess文件,加入以下规则。(下面的规则是针对主域名的,子域名要修改)

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

2.重定向www.domain.com到domain.com

RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

3.重定向olddomain.com到www.newdomain.com

RewriteEngine On
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]

4.重定向olddomain.com to newdomain.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]
RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301]

5.重定向domain.com/file/file.php 到 otherdomain.com/otherfile/other.php

RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^file/file.php$ http://www.otherdomain.com/otherfile/other.php [R=301,L]


74 Responses to “修改.htaccess实现301重定向”

  1. Virusnt says:

    看了博主的技术文章受益匪浅

  2. ysq says:

    输入不带/的会跳出原形,博主试试。

  3. zuizhen says:

    正在找这样的文章,我这就试试看

  4. 123 says:

    怎么样实现301 xxx.com到www.xxx.com 和index.html,index.php几个同时转到www.xxx.com主页呢?

  5. php12306 says:

    汗,胡戈戈?貌似买过你的寂寞,,,

  6. ilikecss says:

    在根目录放了一个.htaccess跳转新旧域名,成功

    但是博客地址: old.com/blog/xxxxxx/ 无法跳转到 new.com/blog/xxxxxx/ (这些都是搜索引擎收录的旧地址)

    求.htaccess的放的位置和写法。

  7. wuhc says:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

    这段加进去后 网站显示500内部服务器错误。。。怎么解决

    • goodwill says:

      博主就是一个250,这种方法测试都没测试过就放出来了,垃圾,你自己用这种方法试试看?网站一下打不开了,不懂代码还瞎搞,连301都搞不清楚还开个P技术博客,最讨厌这种没技术到处瞎转载文章的水货了,不会的大家来问我,我帮大家弄301,php、asp、以及html页面都可以301 扣扣2056809463

  8. wtbhk says:

    谢谢博主,其他地方的代码都不行,用这些就成功了= =

  9. 落梵 says:

    搞定、回来感谢下博主

  10. 刁迎雪 says:

    DNSPOD里直接显性URL重定向应该也OK!

  11. vfhky says:

    第5个楼主应该写错了吧

  12. alen says:

    domain.com/abc.html 换成domain.com/abc/
    怎么把后缀去年,全部换成以上形式呀,找了很多301 htaccess语句,没有找到这类的

  13. 那如何把

    flyseo.68211.com 定向到
    http://www.68211.com/com/flyseo/

    的路径呢

  14. kindsoso says:

    困扰了一段时间的问题终于解决了,谢谢!

  15. 袜子 says:

    试过了,有用,非常感谢,gege

  16. 终于找到这个了!十分感谢

  17. jack says:

    有用,非常感谢!!

  18. 终于找到这个了!十分感谢

  19. xczc says:

    没有用啊。改了,网站都打不开。

  20. 终于找到这个了!十分感谢

Post a Comment