301重定向代码与方法
PHP下的301重定向
Header( "HTTP/1.1 301 Moved Permanently" ) ;
Header( "Location: http://www.111cn.net" );
?
ASP下的301重定向
<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.111cn.net"
%>
ASP .NET下的301重定向
ColdFusion下的301重定向
<.cfheader statuscode="301" statustext="Moved permanently">
<.cfheader name="Location" value="http://www.111cn.net">
旧域名重定向到新域名
创建一个.htaccess文件,并将下面提供的代码写入文件内,它可以确保旧域名所有的目录或者网页正确的跳转到新域名内。
记住.htaccess文件一定要放在旧网站的根目录下,并且新网站要和旧网站保持相同的目录结构及网页文件
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.111cn.net/ [R=301,L]
请将上面的www.111cn.net修改成你想要跳转到的域名。
此外,我建议大家归总旧网站的外部链接,并联系相应的站点修改导入链链的URL,以指向新站点。
4.采用“mod_rewrite”技术
通过该技术进行的改变将在.htaccess文件中体现出来,形如:
Options +FollowSymLinks
RewriteEngine on
RewriteCond % ^cfan365.cn
RewriteRule ^(.*)$ http://www.111cn.net/ [R=permanent,L]
5.绑定/本地DNS(域名别名跳转)
如果具有对本地DNS记录进行编辑修改的权限,则只要添加一个记录就可以解决此问题。
若无此权限,则可要求网站托管服务商对DNS服务器进行相应设置。
DNS服务器的设置
若要将aaa.cfan365.cn指向www.111cn.net,则只需在DNS服务中应增加一个别名记录,可写成:aaa IN CNAME www.111cn.net。
如需配置大量的虚拟域名,则可写成:* IN CNAME www.111cn.net.
这样就可将所有未设置的以cfan365.cn结尾的记录全部重定向到www.111cn.net上。
6.用ASP/PHP实现301重定向:
代码在上面已经介绍过了
资深SEO专家Dan Thies的看法和建议
对于Business.com所遭遇的问题Dan Thies深有体会,因为他也有过类似的遭遇。他的网站上有一个会员跟踪脚本,其中一个会员的站点通过302命令映射到这个跟踪脚本,而这个跟踪脚本又是通过302映射到他的主页。当在Google中用“keyword research”进行搜索,他的主页排名在前十位,然而地址显示的却是那个会员的网址。结果使他哭笑不得:访问者通过Google搜索结果进入他的网站,而他却不得不为这些访问量给那个会员支付报酬! 后来他用robots.txt文件禁止Spiders跟踪访问他的会员跟踪脚本才算解决了问题。
对于Business.com,Dan Thies认为:“目前Google在302重定向"的处理上还存在一定的问题,但并不表示Google不允许302重定向。Business.com并未遭封或遭到惩罚,它们只是返回了错误的响应。”
Dan Thies建议:如果使用了跟踪URL/脚本,又必须让访问者重定向到某一着陆页,那么一定要在robots.txt文件中禁止Spiders去访问第二个重定向。如果没有对跟踪URL/脚本进行重定向,而只是把另外一个URL上的内容给复制过来,那么应在robots.txt文件中禁止Spiders去访问跟踪URL,以防因内容重复而遭搜索引擎惩罚。
301重定向经验谈
一个多域名站主的经验之谈:
“我只有一个网站,主域名是www.111cn.net,此外还有诸如domain1.com、domain2.com、domain3.com等共计十几个域名。所有这些次级域名都映射到www.111cn.net,而且所有域名对应的是同一个IP地址。由于事实上我只有一个站点,一个站点又只能对应一个.htaccess文件,显然不可能直接修改.htaccess文件来实现重定向。我采用了如下步骤:
A.把domain1.com从cfan365.cn上独立出来,让它成为服务器上的一个普通独立网站。
B.为domain1.com创建一个.htaccess文本文件,并在文件中设置重定向代码为:
Redirect permanent / http://www.111cn.net/
再将修改后的.htaccess文件上传给domain1.com所在服务器。
这一步也可以在域名控制面板中完成。
一级域名www.111cn.net下的目录abc
原访问地址为:www.111cn.net/abc
现在想为目录abc添加二级域名abc.111cn.net
怎么才能将www.111cn.net/abc永久重定向abc.111cn.net
服务器环境:win2003+IIS6+php
www.xxx.net/abc已不再是一个域名了,浏览器访问至始至终都是对一个页面的请求,重定向只能由www.xxx.net上面abc文件来决定的。
还有个问题,就是301永久定向后,
动态页的GET参数怎么传呀
将abc/index.php 永久定向到abc.xxx.com/index.php
如果在地址栏中输入
abc/index.php?xxx=123
页面会直接转到
abc.xxx.com/index.php
但是GET参数 xxx=123 没有了。
是不是,需要在动态文件中头部加代码:
首先判断客户端的URL,如果不是abc.xxx.com/index.php
就输出
Header( “HTTP/1.1 301 Moved Permanently” );
Header( “Location: abc.xxx.com/index.php?GET参数及值” );
PHP下的实现方式(参考):
.htaccess文件代码如下(bloghuman.com的.htaccess如此设置):
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^bloghuman.com [nc]
rewriterule ^(.*)$ http://www.bloghuman.com/$1[r=301,nc]
注释1:如果用户访问http://bloghuman.com/,则跳转至http://www.bloghuman.com,且返回301状态码;当用户访问http://bloghuman.com/post/301.htm,则跳转至http://www.bloghuman.com/post/301.htm,并返回301状态码。
注释2:测试URL:http://www.wlxs.com.cn/,你可以访问http://www.wlxs.com.cn/post/301.htm
我在wlxs.com.cn下配置了.htaccess文件,使其301跳转至http://www.bloghuman.com/post/301.htm
我的.htaccess配置实现了由主域名(bloghuman.com)301跳转至二级域名(www.bloghuman.com);
结论:
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^111cn.net [nc]
rewriterule ^(.*)$ http://www.111cn.net/$1[r=301,nc]
ASP脚本实现301跳转的方法:
<%
if request.ServerVariables("HTTP_HOST")="domain1.com" or request.ServerVariables("HTTP_HOST")="111cn.net" then
if Request.ServerVariables("QUERY_STRING")<>"" then p="?"
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.111cn.net"&Request.ServerVariables("SCRIPT_NAME")&p&Request.ServerVariables("QUERY_STRING")
Response.End
end if
PHP的unicode解码程序免费下载
function utfdecode($url) //unicode解码
{
preg_match_all('/%u([[:alnum:]]{4})/', $url, $a);
foreach ($a[1] as $uniord)
{
$dec = hexdec($uniord);
$utf = '';
if ($dec < 128)
{
$utf = chr($dec);
}
else if ($dec < 2048)
{
$utf = chr(192 + (($dec - ($dec % 64)) / 64));
$utf .= chr(128 + ($dec % 64));
}
else
{
$utf = chr(224 + (($dec - ($dec % 4096)) / 4096));
$utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64));
$utf .= chr(128 + ($dec % 64));
}
$url = str_replace('%u'.$uniord, $utf, $url);
}
return urldecode($url);
}
HTML代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> AJAX JSON DEMO </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script" width=100% src="js/jquery1.2.6.js" type="text/javascript"></script>
<style type="text/css">
.json{width:80px; height:22px; line-height:22px; text-align:center; background:#999; color:white; font-size:14px; display:block; cursor:hand;}
.content{border:1px solid #999;padding:1em;margin:1em;font-size:14px;color:black;}
</style>
</HEAD>
<BODY>
<script>
(function($){
$.fn.RichmondJson = function(ajaxDiv)
{
$.ajax({
url : 'data.php',
type : 'get',
dataType : 'json',
data : {'inajax':1},
timeout : 3000,
cache : false,
complete : function(){},
success : function(data)
{
var s = '';
$.each(data,function()
{
s += '<p>姓名:'+this.name+' 昵称:'+this.nick+'</p>';
});
$(s).appendTo('#'+ajaxDiv);
}
});
}
})(jQuery);
</script>
<script>
function Richmond()
{
var rm = new Object;
rm.loaded = false;
rm.json = function()
{
if(!rm.loaded)
{
jQuery(this).RichmondJson.apply(this,arguments);
rm.loaded = !rm.loaded;
}
else
{
alert('无需重复加载!');
return false;
}
}
return rm;
}
var myobj = new Richmond();
</script>
jQuery框架AJAX返回JSON数据
<div id="content" class="content"></div>
<a href="javascript:myobj.json('content')" class="json">JSON</a>
</BODY>
</HTML>
PHP代码:
<?php
if($_GET['inajax'])
{
$arr = array(
array('name' => 'Richmond', 'nick' => iconv('gbk','utf-8','财富星空')),
array('name' => '343548', 'nick' => iconv('gbk','utf-8','笨笨草')),
array('name' => 'iceblue', 'nick' => iconv('gbk','utf-8','冰蓝'))
);
$json_string = json_encode($arr);
echo $json_string;
//echo '<br><br><br>';
//$obj = json_decode($json_string,true);
//print_r($obj);
}
?>
根据域名调用城市信息[全国二级域名]
本文章为你做一个页面,根据用户输入的域名调用不同城市的信息
function getServerName()
{
$ServerName = strtolower($_SERVER['SERVER_NAME']?$_SERVER['SERVER_NAME']:$_SERVER['HTTP_HOST']);
if( strpos($ServerName,'http://') )
{
return str_replace('http://','',$ServerName);
}
return $ServerName;
}
/*
@取得城市编号
#$sn string
#return int;
*/
function getDomainCity( $sn )
{
if( empty( $sn ) )
{
return 0;
}
else
{
$Db = new Db();
$sql = "Select id,domain from cityid where domain='$sn' limit 1";
$query = $Db->query( $sql );
if( $Db->row )
{
$rs = $Db->fetch( $query);
return $rs[0];
}
else
{
return 0;
}
}
}
php+mysql第一条数据无法显示的原因和解决方法
while($row=@mysql_fetch_row($result))”读取数据之前,已经使用“if(@mysql_fetch_row($result))”对有无符合条件的数据进行了一次判断,使指针指向了第二条数据。
解决方法:判断有无符合条件的数据时,使用“if(@mysql_num_rows($result))”,代码如下:
<?php
if(@mysql_num_rows($result)){
while($row=@mysql_fetch_row($result)){
print_r($row);
}
mysql_free_result($result);
}else{
echo "没有符合条件的数据";
}
?>