V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
csensix
V2EX  ›  问与答

apache rewritemap 规则,不懂,求解释

  •  
  •   csensix · 2014-08-20 15:46:56 +08:00 · 3100 次点击
    这是一个创建于 3783 天前的主题,其中的信息可能已经有所发展或是发生改变。
    RewriteMap lowercase int:tolower
    RewriteMap vhost txt:/home/wwwroot/vhost.map
    RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
    RewriteCond ${vhost:%1} ^(/.*)$
    RewriteRule ^/(.*)$ %1/$1

    规则如上,希望懂的能够每一行都给个解释,谢谢了。
    4 条回复    2014-08-21 15:55:16 +08:00
    csensix
        1
    csensix  
    OP
       2014-08-20 16:49:26 +08:00
    没人知道么?
    pinger
        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
    第一次回复,好紧张。。。
    csensix
        3
    csensix  
    OP
       2014-08-21 09:04:38 +08:00
    @pinger 谢谢回答!
    看过你的回复之后,我大致明白了前面四行,就是通过vhost.map文件找到了二级域名对应的目录。但是最后一行还是不太明白,%1/$1转换成的大概不是你说的这样子的吧?
    pinger
        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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2489 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 04:58 · PVG 12:58 · LAX 20:58 · JFK 23:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.