以下重写将localhost
重定向到http://www.example.com/?id=211&test=1
,但我希望浏览器上的本地主机不应更改,但页面将来自上述链接。
我在Apache conf上使用这个重写规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^localhost$ [OR]
RewriteRule ^/?$ http://www.example.com/?id=211&test=1 [L]
答案 0 :(得分:2)
以下重写将
localhost
重定向到http://www.example.com/?id=211&test=1
但是我想要那个本地主机 浏览器不应该更改,但页面将来自上面 链接。
如果您想从其他地方加载页面而不链接URL,mod_rewrite
是错误的工具。请改用mod_proxy
。首先在Apache中启用它;示例假设您使用的是Ubuntu 12.04,但应该适用于大多数Linux Apache安装
sudo a2enmod proxy proxy_http
然后将其设置为从/
到http://www.example.com/?id=211&test=1
的根路径启用反向代理:
<IfModule mod_proxy.c>
# Proxy specific settings
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://www.example.com/?id=211&test=1
ProxyPassReverse / http://www.example.com/?id=211&test=1
</IfModule>
编辑:似乎mod_proxy
and query strings目的地不混合;强调我的:
该指令允许将远程服务器映射到空间 本地服务器;本地服务器不作为代理 传统意义上,但似乎是远程服务器的镜像。 本地服务器通常称为反向代理或网关。路径 是本地虚拟路径的名称; url是。的部分URL 远程服务器,不能包含查询字符串。
因此,无论如何,您可以设置另一个页面 - 可能在localhost
- 这会在幕后反弹。这意味着发生在localhost
:
ProxyPass / bounce.php
然后文件bounce.php
可以包含这一行:
<?php
header('Location: http://www.example.com/?id=211&test=1');
?>
允许mod_proxy
拥有有效目的地。然后PHP文件进行重定向?很难说,但目标服务器上的查询字符串是个问题。