- 论坛徽章:
- 0
|
我设置apache服务器监听80和81口(DocumentRoot相同),然后在apache的前面放了一个具有DNAT的防火墙,来自子网A的IP地址IP-A直接访问80口的服务,来自子网B的IP地址IP-B进行DNAT访问服务器的81口,我想让访问81口的所有请求都rewrite到aaa.php页面,然后我在httpd.conf中添加了如下内容:- RewriteCond %{SERVER_PORT} ^81$
- RewriteRule ^.*$ /aaa.php [NS,L]
复制代码 但是经过测试发现,apache仍然认为%{SERVER_PORT}是80口,通过netstat查看client确实连接的是server的81口,我想apache可能是通过HTTP报头中HOST字段有没有“:81”来判断的,如果没有“:”则默认为是80口,只做DNAT的话HTTP的HOST字段是没有改变的所以上面的规则失效。
我又想了下面的方法:- <VirtualHost *:80>
- DocumentRoot "/www"
- </VirtualHost>
- <VirtualHost *:81>
- DocumentRoot "/www/mytest"
- </VirtualHost>
复制代码 这个时候进行DNAT访问的话确实可以访问到mytest下的index.php文件了,但是有一个问题是我想:
1. 访问我80口的服务器,如果所访问文件不存在则直接出错;
2. 访问我81口的服务器,如果所访问文件不存在,比如访问http://1.1.1.1/aaaa/bbb/ccc,我想将其rewrite到/www/mytest/index.php上去;
我试过将RewriteRule放到<VirtualHost>中不起作用,请问有没有方法实现我的需求呢?谢谢了! |
|