Loading

301重定向-seo搜索优化知道

如何做301重定向?虽然了解301重定向对于网站的重要作用,尤其是要更换网址或者域名的时候,使用的情况例如第一种换域名
第二种网址结构改变,最常见的是网址要作静态化。
那么如何作301重定向呢? 很多文章提到一部分,这里系统可以全面总结一下,参考了一些国外不错的文章。

  • c301 non-www to www ,对于每个网站其实都有两个默认网址带www和不带,这个在严格的seo中最好是统一一个,
    • 如果你是独立服务器或者主机则可以直接配置 Apache 的config 文件httpd.conf.<code>
      <VirtualHost 67.xx.xx.xx>
      ServerName www.vlili.com
      ServerAdmin webmaster@vlili.com
      DocumentRoot /home/vlili/public_html
      </VirtualHost>

      <VirtualHost 67.xx.xx.xx>
      ServerName vlili.com
      RedirectMatch permanent ^/(.*) http://www.vlili.com/$1
      </VirtualHost>
      </code>

    • 需要在.htaccess中设置RewriteEngine On,
    • 虚拟主机的话采用下面的方式,直接修改.htaccess即可。
    • <code>
      RewriteEngine On

      RewriteCond %{HTTP_HOST} ^vlili.com [NC]
      RewriteRule ^(.*)$ http://www.vlili.com/$1 [L,R=301]
      </code>

    • 这里把 vlili.com指向www.vlili.com
    • ‘(*.)$’ 表示所有从vlili.com开始域名都导向到www.vlili.com,更多可以学习正则表达式。
  • 301 www to non-www
    • <code>
      RewriteCond %{HTTP_HOST} ^www.vlili.com [NC]
      RewriteRule ^(.*)$ http://vlili.com/$1 [L,R=301]
      </code>
    • 即从www.vili.com 到vlili.com 本站采用第二种方式
  • 文件夹重定向到一个文件
    • /superhotproduct 重定向到一个单独页面  /new-hot-stuff.php.<code>
      RewriteRule ^superhotproduct(.*)$ /new-hot-stuff.php [L,R=301]
      </code>
    • 如果有例外的某个页面可以
    • <code>
      RewriteRule ^superhotproduct/tony.html /imakemoney.html [L,R=301]
      RewriteRule ^superhotproduct(.*)$ /new-hot-stuff.php [L,R=301]
      </code>
  • 动态链接重定向到某个页面
    • <code>
      RewriteRule ^article.jsp?id=(.*)$ /latestnews.htm [L,R=301]
      </code>
    • 上面例如从http://vlili.com/article.jsp?id=23 到http://vlili.com/latestnews.htm
  • SSL https 重定向到http
    • 创建一个 PHP 文件并且在每个文件头部包含下面的内容:
      if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') {
      echo '<meta name="robots" content="noindex,nofollow">'. "\n";
      }
  • 如果网站比较大,那么可能你要做得手工工作太多,所以让我们批处理来重定向
    • 假设有个站网址结构改变,要把旧的网址转到新的来,old_id INT
      new_url VARCHAR (255)
    • 在.httaccess中加入
    • <code>
      RewriteRule ^/product-(.*)_([0-9]+).php /redirectold.php?productid=$2
      </code>
    • 创建一个php文件 redirectold.php
    • <code>
      <?php
      function getRedirectUrl($productid) {
      // Connect to the database
      $dServer = “localhost”;
      $dDb = “mydbname”;
      $dUser = “mydb_user”;
      $dPass = “password”;

      $s = @mysql_connect($dServer, $dUser, $dPass)
      or die(“Couldn’t connect to database server”);

      @mysql_select_db($dDb, $s)
      or die(“Couldn’t connect to database”);

      $query = “SELECT new_url FROM redirects WHERE old_id = “. $productid;
      mysql_query($query);
      $result = mysql_query($query);
      $hasRecords = mysql_num_rows($result) == 0 ? false : true;
      if (!$hasRecords) {
      $ret = ‘http://www.yoursite.com/’;
      } else {
      while($row = mysql_fetch_array($result))
      {
      $ret = ‘http://www.yoursite.com/’. $row["new_url"];
      }
      }
      mysql_close($s);
      return $ret;
      }

      $productid = $_GET["productid"];
      $url = getRedirectUrl($productid);

      header(“HTTP/1.1 301 Moved Permanently”);
      header(“Location: $url”);
      exit();
      ?>
      </code>

You can leave a response, or trackback from your own site.

Leave a Reply

Twitter Delicious Facebook Digg Stumbleupon Favorites More