URL Rewrite实现子目录绑定另外的网站
时间:2008-03-13 来源:blau
     
  要求是访问http://www.xxx.com/bbs/时看到的内容是http://bbs.yyy.com/,在apache的教程中有
  关于Redirect的指令,但是只能实现跳转,跳转后浏览器中的域名也变了。要想实现浏览器中域名保存不变的话,需要用RewriteRule的P指令,调用apache的代理功能来实现。完整的rewrite规则如下:
   
  
    
  
    
  | 
         
          <IfModule mod_rewrite.c>  | 
    
将上面的内容保存为.htaccess放置到www.xxx.com/bbs目录下就可以实现我们的目标了,RewriteRule完整的指令如下:
| Flag | Description | 
|---|---|
| redirect[=status-code] | Sends a status code between 300 and 400, specified by status-code. The default is 302. | 
| R[=status-code] | Same as "redirect" | 
| forbidden | Forces Stronghold to return a status code of 403 ("Forbidden"). This is useful for conditionally blocking URLs. | 
| F | Same as "forbidden" | 
| gone | Forces Stronghold to return a status code of 410 ("Gone"). | 
| G | Same as "gone" | 
| proxy | Forces the substitution part through the proxy module. The substitution string must be a valid URI. This is useful as a sophisticated alternative to the ProxyPass directive. | 
| P | Same as "proxy" | 
| last | Force the rewrite process to end here | 
| L | Same as "last" | 
| next | Reruns the rewrite process, starting with the first instance of RewriteRule and using the outcome of the current rewrite process as new input | 
| N | Same as "next" | 
| chain | Chains the current rule with the next rule, provided that the current rule matches | 
| C | Same as "chain" | 
| type=mime-type | Forces Stronghold to return the file as the specified MIME type | 
| T=mime-type | Same as "type" | 
| nosubreq | Indicates that the current rule applies only if the current request is not an internal subrequest | 
| NS | Same as "nosubreq" | 
| passthrough | Passes the substitution to the next handler, which should immediately follow the current RewriteRule | 
| PT | Same as "passthrough" | 
| skip=n | Skips the next n rules in a sequence if the current rule matches | 
| S=n | Same as "skip" | 
| env=VARIABLE:VALUE | Sets the environment variable VARIABLE to the value VALUE | 
| E=VARIABLE:VALUE | Same as "env" | 
如果设置正确后,还不成功,并且apache的错误日志有
  [Thu Mar 13 13:47:21 2008] [error] [client xx] Attempt to serve directory: proxy:http://bbs.yyy.com/
  [Thu Mar 13 13:47:21 2008] [error] [client xx] File does not exist: proxy:http://www.xxx.com/bbs/header.gif, referer: http://bbs.yyy.com/
那是因为没有将apache的代理功能打开,需要修改httpd.conf配置文件,添加
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
将代理功能打开,才能用p命令
 相关阅读 更多 + 
    
  









