我已经浏览了很多mod_rewrite示例,但是我无法找到如何重写URL以便将对一个域的查询重定向到新域,并添加了特定的URL参数。我需要实现以下目标:
a)更改服务器名称
b)更改路径以包含应用程序名称
c)附加URL参数
例如:
example.com/index.html --> new_example.com/app/index.html?user=XX
example.com/page1.html --> new_example.com/app/page1.html?user=XX
example.com/page2.html --> new_example.com/app/page2.html?user=XX
example.com/page3.html --> new_example.com/app/page3.html?user=XX
先谢谢,凯文。
答案 0 :(得分:4)
事实证明,你可以使用[P]重定向标志使用mod_rewrite重写到不同的域。据我了解,这相当于mod_proxy。
我需要的是:
example.com/index.html --> new_example.com/app/index.html?user=XX
example.com/page1.html --> new_example.com/app/page1.html?user=XX
以及实现此目的的重写规则是:
RewriteRule .* http://new_example/app$0?user=XX [P]
感谢您的投入。
答案 1 :(得分:0)
您绝对可以使用mod_rewrite重定向到其他域;你只是不能用它来重写到另一个域(即保持浏览器中的URL仍然提供来自另一个站点的内容)。
请查看this article on askapache.com以获取各种形式的重定向的一些示例。
在这种情况下,您可能需要以下内容:
RewriteRule .* http://www.new_example.com/app/$0?user=XX [R=301,L]
答案 2 :(得分:0)
我可能没有与您完全相同的设置,但这目前适用于我:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName main:80
DocumentRoot ...
</VirtualHost>
<VirtualHost *:80>
ServerName alt:80
RewriteEngine On
RewriteCond %{HTTP_HOST} ^alt
RewriteRule ^/(.*) http://alt:8080/$1 [P]
</VirtualHost>
然后我有一个单独的Apache服务器实例,它有自己的conf文件,指示它在8080上监听。[P]用于代理,我想我是在其中一个高级示例中得到的。
如果这不起作用......