是否可以将mod_rewrite内部重定向(因此地址栏中的url不会更改)到同一主机上的不同端口? 例如
http://host.com:8080 -> http://host.com:9999/myapplication/?param=val
答案 0 :(得分:5)
1,启用mod_proxy
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
2,您应该为vhost配置apache:
<VirtualHost *:8080>
....
ProxyPass / http://host.com:9999/myapplication/?param=val
ProxyPassReverse / http://host.com:9999/myapplication/?param=val
</VirtualHost>
3,在端口9999上设置VHost
更多信息:
答案 1 :(得分:2)
使用代理标志[P]
对mod_proxy解决方案进行详细说明:
启用模块mod_proxy和mod_proxy_http:
a2enmod proxy proxy_http
如果未启用这两项,您将在以后获得300 Forbidden状态和错误消息&#34; AH00669:尝试在未启用代理的情况下从mod_rewrite发出远程请求&#34;在日志中。
将以下内容放入转发主机的Apache2 vhost配置部分:
<VirtualHost *:8080>
…
RewriteEngine on
RewriteCond %{REQUEST_URI} !^$
RewriteCond %{REQUEST_URI} !^/
RewriteRule .* - [R=400,L]
RewriteRule (.*) http://host.com:9999/myapplication/$1?param=val [P,L]
…
</VirtualHost>
这包括Steve Webster防止恶意URL制作的技术,explained here。但是不知道如何处理在这种情况下附加GET参数。
重启Apache2:
sudo service apache2 restart