2010年 10月 02日 的归档
对老域名用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: https://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: https://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,还不会对正常访问造成影响哦~