1
csensix OP 没人知道么?
|
2
pinger 2014-08-20 20:16:15 +08:00
我不会,但是自己有玩过VPS上nginx的rewrite,我大概好像似乎明白这个意思,(应该是二级域名跳转吧),希望能对你有用~~有错误请指出。
RewriteMap lowercase int:tolower /*这句话应该是把是字母的字符都统一为小写,因为C里面的tolower是酱紫的,嗯,它应该是建立了一个类似于C里面的自定义函数,供下面调用*/ RewriteMap vhost txt:***/vhost.map /*这个是在指定目录(应该为你的apache配置目录)创建**vhost.map**这个文件,文件里面应该写你设定的二级域名跟指定目录对应关系*/ RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$ /*RewriteCond的意思是执行条件,这里用到了第一次自定义的lowercase*/ RewriteCond ${vhost:%1} ^(/.*)$ /*这个RewriteCond(执行条件)用到了第二次我们自定义的vhost函数,%1的意思是上一行里面跟正则表达式 ^(.+)$匹配的小括号“()”的内容(就是你的二级域名), ${vhost:%1}就是按你vhost.map的内容进行替换,二级域名变成了目录地址*/ RewriteRule ^/(.*)$ %1/$1 /*这个就是url的rewrite功能了,%1就是目录地址,然后在url里面加进去*/ 举个例子:如果你在vhost.map里面这样写(域名目录间是空格,目录可能要绝对路径,你试试): hello.2dm.org /hello 然后访问http://hello.2dm.org时候,第一句执行条件里的SERVER_NAME就是hello.2dm.org,然后经过两个执行条件后,得到了hello.2dm.org对应的目录为/hello,经过最后那句重写后得到了2dm.org/hello 资料链接: http://www.php100.com/manual/apache2/mod/mod_rewrite.html 第一次回复,好紧张。。。 |
3
csensix OP @pinger 谢谢回答!
看过你的回复之后,我大致明白了前面四行,就是通过vhost.map文件找到了二级域名对应的目录。但是最后一行还是不太明白,%1/$1转换成的大概不是你说的这样子的吧? |
4
pinger 2014-08-21 15:55:16 +08:00
没错啊,$1代表后面的所有东西,比如index.php,一开始url为/index.php,最终url重写为/hello/index.php,而SERVER_NAME自始至终都是hello.2dm.org
|