如何做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 OnRewriteCond %{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,更多可以学习正则表达式。
- 如果你是独立服务器或者主机则可以直接配置 Apache 的config 文件httpd.conf.<code>
- 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 本站采用第二种方式
- <code>
- 文件夹重定向到一个文件
- /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>
- /superhotproduct 重定向到一个单独页面 /new-hot-stuff.php.<code>
- 动态链接重定向到某个页面
- <code>
RewriteRule ^article.jsp?id=(.*)$ /latestnews.htm [L,R=301]
</code> - 上面例如从http://vlili.com/article.jsp?id=23 到http://vlili.com/latestnews.htm
- <code>
- SSL https 重定向到http
- 创建一个 PHP 文件并且在每个文件头部包含下面的内容:
if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') { echo '<meta name="robots" content="noindex,nofollow">'. "\n"; }
- 创建一个 PHP 文件并且在每个文件头部包含下面的内容:
- 如果网站比较大,那么可能你要做得手工工作太多,所以让我们批处理来重定向
- 假设有个站网址结构改变,要把旧的网址转到新的来,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>
- 假设有个站网址结构改变,要把旧的网址转到新的来,old_id INT
RSS Feed
Twitter
Posted in
Tags: