国庆去重庆

之前从来没有去过重庆,这次正好有个假期可以去走一走,不过就是没有找到人一起同行,实在遗憾。不过读完这两篇文章 Please Don’t Be Afraid To Travel On Your OwnAre You Afraid to Travel Alone?之后,之前的小小担心有所减少。结交新朋友对我来说不是一件容易的事情,但是想要在这个社会生存,就必须学会结识更多的朋友。

结交朋友的好处:多个朋友多条路,人生观价值观不断的变化。
重庆 磁器口

关于网站备案

转载自:
http://www.ruanyifeng.com/blog/2009/09/about_chinese_website_licensing_system.html作者: 阮一峰
日期: 2009年9月 9日

2004年,信息产业部要求网站备案,否则就是非法网站。
我赶紧就去备案了,ruanyifeng.com的备案号是“沪ICP备05002727号”。
后来,我把网站放到了境外服务器上,备案号就没用了。但不管怎么样,我认为我的网站依然属于合法网站,因为我履行了政府对我的要求,申请了备案,把我的真实联系方式留给了政府,好让他们随时能够找到我。

再后来,曾经为我托管服务器的那家国内公司倒闭了,由于我的备案是他们代办的,导致我在备案管理系统的用户名和密码作废,ruanyifeng.com处于被冻结状态,找回密码,需要向上海市通信管理局申请。我觉得太麻烦,就没去申请。当然,更主要的原因是,就算密码找回来了,我也不知道我要用它干什么。此后的几年,一直太平无事。直到今年的8月22日,我收到了一封Email:

关于ICP备案信息被接入商取消接入的通知
发信人:[email protected]
尊敬的用户(阮一峰):您备案信息中填写的接入商(中国电信集团福建省分公司ICP)经核实,认为你备案的网站非其接入,已经取消了相关接入,目前您主体下备案网站(网站名称:阮一峰的个人主页,域名:ruanyifeng.com等)已不存在任何接入信息,具体情况您可再向接入商进行确认。请尽快联系你的新接入商为你填加接入信息。特此通知!

政府要求我提供网站接入商信息,可是我的网站是由美国公司提供互联网接入的,那家公司不在政府目前认可的1141家ISP之列,事实上所有外国ISP都不在其中。那样的话,即使我修改了ISP,也不会审核通过的。备案成功的基本规则就是,你的接入商必须在政府的名单中。所以,我没有办法,只能对着那封Email干瞪眼,束手无策。
今天,我又收到了第二封Email。

关于ICP备案信息不符合备案要求退回修正的通知
发信人:[email protected]
尊敬的用户[阮一峰],很遗憾的通知您,您的ICP备案申请(ruanyifeng.com),经[上海市通信管理局0]审核,不符合备案要求,现退回修改,原因请登陆系统查询。

政府发现我的备案不符合他们的要求,再一次要求我修改。但是正如我前面说的,我的用户名和密码已经作废,现在连备案系统都无法登录,所以根本没法修改。退一步说,就算能修改的话,又能怎么修改呢?把服务器搬回境内?算了吧。

这就是整件事情荒谬的地方。现行的网站备案制度,其实是一种“双绑定”制度,一方面将网站和它的所有人绑定在一起,另一方面将网站和它的接入商绑定在一起。一旦出事的话,政府不仅要找到网站的所有人,还要找到网站的接入商。为什么要找接入商呢?说穿了,就是为了第一时间把网线拔掉。

所以,对于网站主来说,服务器放在境内是很可怕的事情。你的网线随时有可能被拔,你的硬盘随时有可能被破坏,甚至整台服务器都会被搬走,再也要不回来。(我一点没有夸张,这是每天都在发生的事情。)此外,如果你想更换接入商的话,就需要很麻烦地申请修改备案。因此,网站有了合法身份,反而会让你觉得很不安全,好像法律不是在保护你,而是在迫害你一样。

六十大庆一天天临近,工信部加快速度,清理备案不合格网站。我不知道接下来会发生什么事情,屏蔽所有未备案或备案不合格的网站?也许吧。经过这一年,我觉得什么事情都有可能发生。

今天,我写这件事情,就是想跟大家打个招呼,说一声这里有可能被屏蔽。如果这真的发生了,你可以翻墙或通过Feed阅读我的文章。另外,为了防止万一,我启用了一个备份网址:http://ruanyf.blogspot.com/(大陆读者需要翻墙)。

最后我想说,几十年以后,或者几个世纪以后,回顾这段历史的时候,大家会觉得网站备案、GFW、绿坝软件、诸如此类的事情,都是好事,因为它们让许多中国青年认清了这个社会的本质,不再对旧制度抱有幻想,开始期盼新制度的到来,从而大大加快了社会变革的速度。要是没有它们,许多人也许要过许多年才会对现行制度产生怀疑,从而进行彻底的反思,新制度就会因此少了许多支持者。统治者越是凶恶,其实越表明他的恐慌和虚弱,而历史就像印度诗人泰戈尔所说,“总是在耐心地等待被侮辱和被压迫者的胜利”。
(完)

PHP 汉字转拼音URL

想要一个汉字转拼音URL的功能,于是在这里找到了http://hahaxiao.techweb.com.cn/archives/750.html,但是它只是把汉字转换为拼音,不能生成wo-ai-ni这样的URL格式,所以我小小的改动了一下。
源代码来自:http://hahaxiao.techweb.com.cn/archives/750.html

<?php
/**
*
* 中文转换为拼音
*
*/
function cn2pinyin($_String, $_Code='gb2312') 
{
	$_DataKey = "a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao|ce|ceng|cha" .
	"|chai|chan|chang|chao|che|chen|cheng|chi|chong|chou|chu|chuai|chuan|chuang|chui|chun|chuo|ci|cong|cou|cu|" .
	"cuan|cui|cun|cuo|da|dai|dan|dang|dao|de|deng|di|dian|diao|die|ding|diu|dong|dou|du|duan|dui|dun|duo|e|en|er" .
	"|fa|fan|fang|fei|fen|feng|fo|fou|fu|ga|gai|gan|gang|gao|ge|gei|gen|geng|gong|gou|gu|gua|guai|guan|guang|gui" .
	"|gun|guo|ha|hai|han|hang|hao|he|hei|hen|heng|hong|hou|hu|hua|huai|huan|huang|hui|hun|huo|ji|jia|jian|jiang" .
	"|jiao|jie|jin|jing|jiong|jiu|ju|juan|jue|jun|ka|kai|kan|kang|kao|ke|ken|keng|kong|kou|ku|kua|kuai|kuan|kuang" .
	"|kui|kun|kuo|la|lai|lan|lang|lao|le|lei|leng|li|lia|lian|liang|liao|lie|lin|ling|liu|long|lou|lu|lv|luan|lue" .
	"|lun|luo|ma|mai|man|mang|mao|me|mei|men|meng|mi|mian|miao|mie|min|ming|miu|mo|mou|mu|na|nai|nan|nang|nao|ne" .
	"|nei|nen|neng|ni|nian|niang|niao|nie|nin|ning|niu|nong|nu|nv|nuan|nue|nuo|o|ou|pa|pai|pan|pang|pao|pei|pen" .
	"|peng|pi|pian|piao|pie|pin|ping|po|pu|qi|qia|qian|qiang|qiao|qie|qin|qing|qiong|qiu|qu|quan|que|qun|ran|rang" .
	"|rao|re|ren|reng|ri|rong|rou|ru|ruan|rui|run|ruo|sa|sai|san|sang|sao|se|sen|seng|sha|shai|shan|shang|shao|" .
	"she|shen|sheng|shi|shou|shu|shua|shuai|shuan|shuang|shui|shun|shuo|si|song|sou|su|suan|sui|sun|suo|ta|tai|" .
	"tan|tang|tao|te|teng|ti|tian|tiao|tie|ting|tong|tou|tu|tuan|tui|tun|tuo|wa|wai|wan|wang|wei|wen|weng|wo|wu" .
	"|xi|xia|xian|xiang|xiao|xie|xin|xing|xiong|xiu|xu|xuan|xue|xun|ya|yan|yang|yao|ye|yi|yin|ying|yo|yong|you" .
	"|yu|yuan|yue|yun|za|zai|zan|zang|zao|ze|zei|zen|zeng|zha|zhai|zhan|zhang|zhao|zhe|zhen|zheng|zhi|zhong|" .
	"zhou|zhu|zhua|zhuai|zhuan|zhuang|zhui|zhun|zhuo|zi|zong|zou|zu|zuan|zui|zun|zuo";
	$_DataValue = "-20319|-20317|-20304|-20295|-20292|-20283|-20265|-20257|-20242|-20230|-20051|-20036|-20032|-20026|-20002|-19990" .
	"|-19986|-19982|-19976|-19805|-19784|-19775|-19774|-19763|-19756|-19751|-19746|-19741|-19739|-19728|-19725" .
	"|-19715|-19540|-19531|-19525|-19515|-19500|-19484|-19479|-19467|-19289|-19288|-19281|-19275|-19270|-19263" .
	"|-19261|-19249|-19243|-19242|-19238|-19235|-19227|-19224|-19218|-19212|-19038|-19023|-19018|-19006|-19003" .
	"|-18996|-18977|-18961|-18952|-18783|-18774|-18773|-18763|-18756|-18741|-18735|-18731|-18722|-18710|-18697" .
	"|-18696|-18526|-18518|-18501|-18490|-18478|-18463|-18448|-18447|-18446|-18239|-18237|-18231|-18220|-18211" .
	"|-18201|-18184|-18183|-18181|-18012|-17997|-17988|-17970|-17964|-17961|-17950|-17947|-17931|-17928|-17922" .
	"|-17759|-17752|-17733|-17730|-17721|-17703|-17701|-17697|-17692|-17683|-17676|-17496|-17487|-17482|-17468" .
	"|-17454|-17433|-17427|-17417|-17202|-17185|-16983|-16970|-16942|-16915|-16733|-16708|-16706|-16689|-16664" .
	"|-16657|-16647|-16474|-16470|-16465|-16459|-16452|-16448|-16433|-16429|-16427|-16423|-16419|-16412|-16407" .
	"|-16403|-16401|-16393|-16220|-16216|-16212|-16205|-16202|-16187|-16180|-16171|-16169|-16158|-16155|-15959" .
	"|-15958|-15944|-15933|-15920|-15915|-15903|-15889|-15878|-15707|-15701|-15681|-15667|-15661|-15659|-15652" .
	"|-15640|-15631|-15625|-15454|-15448|-15436|-15435|-15419|-15416|-15408|-15394|-15385|-15377|-15375|-15369" .
	"|-15363|-15362|-15183|-15180|-15165|-15158|-15153|-15150|-15149|-15144|-15143|-15141|-15140|-15139|-15128" .
	"|-15121|-15119|-15117|-15110|-15109|-14941|-14937|-14933|-14930|-14929|-14928|-14926|-14922|-14921|-14914" .
	"|-14908|-14902|-14894|-14889|-14882|-14873|-14871|-14857|-14678|-14674|-14670|-14668|-14663|-14654|-14645" .
	"|-14630|-14594|-14429|-14407|-14399|-14384|-14379|-14368|-14355|-14353|-14345|-14170|-14159|-14151|-14149" .
	"|-14145|-14140|-14137|-14135|-14125|-14123|-14122|-14112|-14109|-14099|-14097|-14094|-14092|-14090|-14087" .
	"|-14083|-13917|-13914|-13910|-13907|-13906|-13905|-13896|-13894|-13878|-13870|-13859|-13847|-13831|-13658" .
	"|-13611|-13601|-13406|-13404|-13400|-13398|-13395|-13391|-13387|-13383|-13367|-13359|-13356|-13343|-13340" .
	"|-13329|-13326|-13318|-13147|-13138|-13120|-13107|-13096|-13095|-13091|-13076|-13068|-13063|-13060|-12888" .
	"|-12875|-12871|-12860|-12858|-12852|-12849|-12838|-12831|-12829|-12812|-12802|-12607|-12597|-12594|-12585" .
	"|-12556|-12359|-12346|-12320|-12300|-12120|-12099|-12089|-12074|-12067|-12058|-12039|-11867|-11861|-11847" .
	"|-11831|-11798|-11781|-11604|-11589|-11536|-11358|-11340|-11339|-11324|-11303|-11097|-11077|-11067|-11055" .
	"|-11052|-11045|-11041|-11038|-11024|-11020|-11019|-11018|-11014|-10838|-10832|-10815|-10800|-10790|-10780" .
	"|-10764|-10587|-10544|-10533|-10519|-10331|-10329|-10328|-10322|-10315|-10309|-10307|-10296|-10281|-10274" .
	"|-10270|-10262|-10260|-10256|-10254";
	$_TDataKey = explode('|', $_DataKey);
	$_TDataValue = explode('|', $_DataValue);
	$_Data = (PHP_VERSION >= '5.0') ? array_combine($_TDataKey, $_TDataValue) : _Array_Combine($_TDataKey, $_TDataValue);
	arsort($_Data);
	reset($_Data);
	if ($_Code != 'gb2312')
	$_String = _U2_Utf8_Gb($_String);
	$_Res = '';
	for ($i = 0; $i < strlen($_String); $i++) 
	{
		$_P = ord(substr($_String, $i, 1));
		if ($_P > 160) 
		{
			$_Q = ord(substr($_String, ++$i, 1));
			$_P = $_P * 256 + $_Q - 65536;
		}
		$_Res .= _Pinyin($_P, $_Data);
	}
	//echo $_Res;
	$_Res = preg_replace("/[^a-z0-9\s]*/", '', $_Res);   //此处有改动
	return $_Res = preg_replace("/\s/", '-', $_Res);     //此处有改动
}
 
function _Pinyin($_Num, $_Data) 
{
	if ($_Num > 0 && $_Num < 160)
	return chr($_Num);
	elseif ($_Num < -20319 || $_Num > -10247)
	return '';
	else {
	foreach ($_Data as $k => $v) {
	if ($v <= $_Num)
	break;
	}
	return $k;
	}
}
function _U2_Utf8_Gb($_C) 
{
	$_String = '';
	if ($_C < 0x80)
	$_String .= $_C;
	elseif ($_C < 0x800) {
	$_String .= chr(0xC0 | $_C >> 6);
	$_String .= chr(0x80 | $_C & 0x3F);
	} elseif ($_C < 0x10000) {
	$_String .= chr(0xE0 | $_C >> 12);
	$_String .= chr(0x80 | $_C >> 6 & 0x3F);
	$_String .= chr(0x80 | $_C & 0x3F);
	} elseif ($_C < 0x200000) {
	$_String .= chr(0xF0 | $_C >> 18);
	$_String .= chr(0x80 | $_C >> 12 & 0x3F);
	$_String .= chr(0x80 | $_C >> 6 & 0x3F);
	$_String .= chr(0x80 | $_C & 0x3F);
	}
	return iconv('UTF-8', 'GB2312', $_String);
}
function _Array_Combine($_Arr1, $_Arr2) 
{
	for ($i = 0; $i < count($_Arr1); $i++)
	$_Res[$_Arr1[$i]] = $_Arr2[$i];
	return $_Res;
}
echo cn2pinyin('zhangsan\'s google 李四',1);

草根创业,你能坚持多久?

转载自:http://www.im286.com/thread-11770502-1-1.html

真的是有感而发.

我今天为了新发布的ios游戏,在网上找一些手机软件游戏方面的站,想多放一点收录,搞点长尾流量。手头是一份大概2011~2012年的手机方面的网站名录,大概有100来个,我就耐心的一家家的看,看到好的就提交上去。

然后我就发现一个问题,这份名录里,真正还存活着,还在继续发展的网站,不超过1/10,很多名字非常响亮的网站,有的长期不更新,有的甚至转成淘宝客网站,更有的404了。我只能叹气着关掉窗口。

大概在一两年前,开始做手机游戏软件下载、收录的朋友,我想他们是有眼光的,都想抓住移动领域的新兴机会。我看到不少网站的关键词里都写着“中国最好的手机软件门户、中国第一手机游戏下载”,可见理想是大的,可是结局往往并不美好。

很多网站,每天还有一点流量,论坛里有那么几个贴子,站长似乎已经不更新了,站上的软件版本已经很陈旧了。这些网站都有个共同点,ICP备XXXXX、CMS用的是wordpress或者帝国,甚至新云。一看便知是草根的站。

我看着颇为感慨,很辛酸的感觉。作为同样的草根创业者,我很能理解草根创业之难。自己一两个人搞一个网站,能把DEDE、帝国用得好,已经很不错了,还要长期更新数据,要么就靠采集,要么就靠人肉上,看着PV一点一点龟速爬升,到处做外链,还不敢乱来怕被K。搞了几个月,每天的IP那是那个叼样子,我真不知道有几个人能坚持下去。

这时就会想,一个再有前途的领域又如何?假设要在这个领域想赚到钱需要的实力是5分,可能一个草根光凭自己的力量,只能达到2分!那么这个领域对我们来说就毫无价值。

比如手机游戏收录这块,看起来人人都能做,不就是下载站吗?弄个CMS,套个下载模版就好了,没什么了不起的,再找个站采集下,不就有数据了?有数据就能收录,收录就能来流量,再挂点广告就能赚钱了。

是这个路子吧?

可是,有几个草根做的站,能跟m.163.com(网易的APP收录)相比的,界面格局、用户体验都差得很远。光拿个帝国\DEDEE的下载站模版来改,根本不行,那些模版里还沿用着古老的下载格式。我今天找了个站提交时,甚至发现站长根本就没设置游戏的分类,全是操作系统什么的,一看就是帝国之类的模版。

把一个站,慢慢的做起来,不光是积攒数据,也是一个不断进化、优化的过程。我觉得我们不仅仅是要做一个跟别的站差不多的站,而是要做到比别人更舒服才行。可是这个过程,这个投入,又有多少草根站长能够坚持,能够坚持多久。

其他领域也一样,当你看中一个领域,准备做一个新站,准备向那些已经在这个领域站稳脚跟的其他网站学习和挑战时,你是否想过,我们能坚持多久,我们的技术力量、我们对网站的定位是否清晰。

作为一个做站虑做屡败的站长,最后被迫去做手机游戏的人,当我看到这些衰落或关闭的站,我就觉得很心痛,因为这些站点曾经承载了某个人的梦想,某个人的心血,某个人在夜半不眠不休的努力。因为我曾经就是这样,很辛苦,很累,但是一个个站点倒下,一个个域名懒的再去续费,一个个美好的肥皂泡破灭。

写在这里,既是有感而发,也是对自己的一个劝勉。如果我们真的看好一个领域,如果我们真的开始做一个站,就要坚持下去,多学习技术,让网站随着自己的技术进步。没有人真正愿意做垃圾站,我们也不并真的喜欢别人叫我们垃圾站。

还是祝象我这样的草根创业者,能够找到自己的领域,扎实的做下去。

.htaccess 语法参数说明

转载自:http://blog.aizhet.com/Linux/10364.html

接触过 .htaccess 文件的朋友们是否对立面的一些语法不是很懂,经常会看到一条规则后面跟些大写的 L NC R QSA 什么的,知道他们什么意思吗?OK,下面这篇文章就是简单的对 .htaccess 文件的相关语法参数进行一下简单的说明。

chain|C(链接下一规则)

此标记使当前规则与下一个规则相链接。它产生这样的效果:如果一个规则被匹配,则继续处理其后继规则,也就是这个标记不起作用;如果该规则不被匹配,则其后继规则将被跳过。比如,在一个目录级规则中执行一个外部重定向时,你可能需要删除”.www”(此处不应该出现”.www”)。

cookie|CO=NAME:VAL:domain[:lifetime[:path]](设置cookie)

在客户端设置一个cookie。cookie的名称是NAME,值是VAL。domain是该cookie的域,比如.apache.org,可选的lifetime是cookie的有效期(分钟),可选的path是cookie的路径。

env|E=VAR:VAL(设置环境变量)

此标记将环境变量VAR的值为VAL,VAL可以包含可扩展的正则表达式反向引用($N和%N)。此标记可以多次使用以设置多个变量。这些变量可以在其后许多情况下被间接引用,通常是在XSSI(<!–#echo var=”VAR”–>)或CGI($ENV{VAR})中,也可以在后继的RewriteCond指令的CondPattern参数中通过%{ENV:VAR}引用。使用它可以记住从URL中剥离的信息。

forbidden|F(强制禁止URL)

强制禁止当前URL,也就是立即反馈一个HTTP响应码403(被禁止的)。使用这个标记,可以链接若干个RewriteConds来有条件地阻塞某些URL。

gone|G(强制废弃URL)

强制当前URL为已废弃,也就是立即反馈一个HTTP响应码410(已废弃的)。使用这个标记,可以标明页面已经被废弃而不存在了。

handler|H=Content-handler(强制指定内容处理器)

强自制定目标文件的内容处理器为Content-handler。例如,用来模拟mod_alias模块的ScriptAlias指令,以强制映射文件夹内的所有文件都由”cgi-script”处理器处理。

last|L(结尾规则)

立即停止重写操作,并不再应用其他重写规则。它对应于Perl中的last命令或C语言中的break命令。这个标记用于阻止当前已被重写的URL被后继规则再次重写。例如,使用它可以重写根路径的URL(/)为实际存在的URL(比如:/e/www/)。

next|N(从头再来)

重新执行重写操作(从第一个规则重新开始)。此时再次进行处理的URL已经不是原始的URL了,而是经最后一个重写规则处理过的URL。它对应于Perl中的next命令或C语言中的continue命令。此标记可以重新开始重写操作(立即回到循环的开头)。但是要小心,不要制造死循环!

nocase|NC(忽略大小写)

它使Pattern忽略大小写,也就是在Pattern与当前URL匹配时,A-Z和a-z没有区别。

noescape|NE(在输出中不对URI进行转义)

此标记阻止mod_rewrite对重写结果应用常规的URI转义规则。 一般情况下,特殊字符(%, $, ;等)会被转义为等值的十六进制编码(%25′, %24′, %3B等)。此标记可以阻止这样的转义,以允许百分号等符号出现在输出中,比如:

RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE] 可以使/foo/zed转向到一个安全的请求/bar?arg=P1=zed

nosubreq|NS(不对内部子请求进行处理)

在当前请求是一个内部子请求时,此标记强制重写引擎跳过该重写规则。比如,在mod_include试图搜索目录默认文件(index.xxx)时,Apache会在内部产生子请求。对于子请求,重写规则不一定有用,而且如果整个规则集都起作用,它甚至可能会引发错误。所以,可以用这个标记来排除某些规则。使用原则:如果你为URL添加了CGI脚本前缀,以强制它们由CGI脚本处理,但对子请求处理的出错率(或者资源开销)很高,在这种情况下,可以使用这个标记。

proxy|P(强制为代理)

此标记使替换成分被内部地强制作为代理请求发送,并立即中断重写处理,然后把处理移交给mod_proxy模块。你必须确保此替换串是一个能够被mod_proxy处理的有效URI(比如以http://www.phpernote.com开头),否则将得到一个代理模块返回的错误。使用这个标记,可以把某些远程成分映射到本地服务器域名空间,从而增强了ProxyPass指令的功能。注意:要使用这个功能,必须已经启用了mod_proxy模块。

passthrough|PT(移交给下一个处理器)

此标记强制重写引擎将内部request_rec结构中的uri字段设置为filename字段的值,这个小小的修改使得RewriteRule指令的输出能够被(从URI转换到文件名的)Alias, ScriptAlias, Redirect等指令进行后续处理[原文:This flag is just a hack to enable post-processing of the output of RewriteRule directives, using Alias, ScriptAlias, Redirect, and other directives from various URI-to-filename translators.]。

举一个能说明其含义的例子: 如果要将/abc重写为/def, 然后再使用mod_alias将/def转换为/ghi,可以这样:

RewriteRule ^/abc(.*) /def$1 [PT]
Alias /def /ghi

如果省略了PT标记,虽然将uri=/abc/…重写为filename=/def/…的部分运作正常,但是后续的mod_alias在试图将URI转换到文件名时会遭遇失效。注意:如果需要混合使用多个将URI转换到文件名的模块时,就必须使用这个标记。。此处混合使用mod_alias和mod_rewrite就是个典型的例子。

qsappend|QSA(追加查询字符串)

此标记强制重写引擎在已有的替换字符串中追加一个查询字符串,而不是简单的替换。如果需要通过重写规则在请求串中增加信息,就可以使用这个标记。

redirect|R [=code](强制重定向)

若Substitution以http://thishost[:thisport]/(使新的URL成为一个URI)开头,可以强制性执行一个外部重定向。如果没有指定code,则产生一个HTTP响应码302(临时性移动)。如果需要使用在300-400范围内的其他响应代码,只需在此指定即可(或使用下列符号名称之一:temp(默认), permanent, seeother)。使用它可以把规范化的URL反馈给客户端,如将”/~”重写为”/u/”,或始终对/u/user加上斜杠,等等。

注意:在使用这个标记时,必须确保该替换字段是一个有效的URL。否则,它会指向一个无效的位置!并且要记住,此标记本身只是对URL加上http://thishost[:thisport]/前缀,重写操作仍然会继续进行。通常,你还会希望停止重写操作而立即重定向,那么就还需要使用L标记。

skip|S=num(跳过后继规则)

此标记强制重写引擎跳过当前匹配规则之后的num个规则。它可以模拟if-then-else结构:最后一个规则是then从句,而被跳过的skip=N个规则是else从句。注意:它和chain|C标记是不同的!

type|T=MIME-type(强制MIME类型)

强制目标文件的MIME类型为MIME-type,可以用来基于某些特定条件强制设置内容类型。比如,下面的指令可以让.php文件在以.phps扩展名调用的情况下由mod_php按照PHP源代码的MIME类型(application/x-httpd-php-source)显示:

RewriteRule ^(.+\.php)s$ $1 [T=application/x-httpd-php-source]