对老域名用PHP写了个301重定向
之前,这里的域名一直都是 li2z.cn ,但是,被CNNIC逼得走投无路以后,我终于把域名换成 luy.li 了。其实准确的说,不是“换”,是加了一个域名,并射成默认了而已,因此用 li2z.cn 还是可以访问的,甚至连301都没有做,之前我的做法只是把两个域名的后台路径指向同一个了而已(题外话:由于两个站的内容完全一致,所以被google惩罚了,li2z.cn 的PR瞬间就变成0了,所以在意PR的站长千万别这么干哦~)。
现在,时间也过去这么久了,大多数的流量已经是新域名下的了,但是老域名的流量也还有不少,于是我就想能不能在不影响访问的同时,统计一下老域名的每次http请求的来路。
方法自然是把所有request用301重定向到 luy.li 的对应地址,然后在日志里记录refer了(不明白301和refer的请自行google基础知识)。
这个用我三脚猫的php都很容易搞定,就几行代码,index.php如下:
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://luy.li".$_SERVER['REQUEST_URI']); date_default_timezone_set('Etc/GMT-8'); $msg = date('Y-m-d H:i:s').' '.$_SERVER['HTTP_REFERER'].' '.$_SERVER['REQUEST_URI']."\n"; file_put_contents('log.txt',$msg,FILE_APPEND); ?>
然后,建个 .htaccess 把域名下的所有请求都指向 index.php:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php [L] </IfModule>
测试一下,对get请求,可以完整地转到新的域名了:
$ curl -v "http://li2z.cn/abc?xxx=yyy"
* About to connect() to li2z.cn port 80 (#0)
* Trying 66.147.240.158… connected
* Connected to li2z.cn (66.147.240.158) port 80 (#0)
> GET /abc?xxx=yyy HTTP/1.1
> User-Agent: curl/7.21.1 (i686-pc-linux-gnu) libcurl/7.21.1 GnuTLS/2.10.2 zlib/1.2.5
> Host: li2z.cn
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Date: Sat, 02 Oct 2010 12:05:53 GMT
< Server: Apache
< X-Powered-By: PHP/5.2.14
< Location: http://luy.li/abc?xxx=yyy
< Cache-Control: max-age=1
< Expires: Sat, 02 Oct 2010 12:05:54 GMT
< Vary: Accept-Encoding
< Content-Length: 0
< Content-Type: text/html
<
* Connection #0 to host li2z.cn left intact
* Closing connection #0
然后在后台目录里会生成一个 log.txt ,里面会有所有访问的时间、refer和uri,这样日后就可以方便地查出老域名的所有来路和受访页面了,最重要的是,由于有301,还不会对正常访问造成影响哦~
建议继续学习:
- 使用apache下的301设置来做域名的更换转移 (阅读:3342)
- WordPress重定向漏洞 (阅读:3211)
- .htaccess的301跳转 (阅读:3014)
- 大文件重定向和管道的效率对比 (阅读:2122)
- Windows 下重定向当前进程的 stdout 到网络连接 (阅读:1329)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:bones7456 来源: I am LAZY bones ?
- 标签: 301 重定向
- 发布时间:2010-10-02 08:07:08
- [46] IOS安全–浅谈关于IOS加固的几种方法
- [45] 图书馆的世界纪录
- [45] 如何拿下简短的域名
- [45] Oracle MTS模式下 进程地址与会话信
- [42] 【社会化设计】自我(self)部分――欢迎区
- [42] android 开发入门
- [41] 读书笔记-壹百度:百度十年千倍的29条法则
- [41] 界面设计速成
- [39] 视觉调整-设计师 vs. 逻辑
- [35] Go Reflect 性能