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命令
相关阅读 更多 +
排行榜 更多 +










