是否可以使用.htaccess将url重写到文件所在的另一个域?

时间:2012-12-20 20:54:03

标签: .htaccess mod-rewrite url-rewriting

网站位于http://www.siteone.com 我想将网址重写为http://www.anothersite.com/siteone或子网http://siteone.anothersite.com

该网站仅在http://www.siteone.com托管,不会将任何文件移动或复制到anothersite.com。

是否可以使用.htaccess执行此操作,还是有其他方法可以执行此操作?

编辑(以下是我在本地主机中的htaccess中所做的,它似乎不起作用)。不确定我做错了什么。我不想在现阶段弄乱现场。

RewriteCond %{HTTP_HOST} /localhost/mysite [NC] 
RewriteRule ^(.*)$ http://www.anothersite.com/siteone/$1 [L,P] 
ProxyPassReverse /localhost/mysite http://www.anothersite.com/siteone/

1 个答案:

答案 0 :(得分:0)

只要您加载了 mod_proxy ,就可以在重写规则中使用P标记来反转代理请求。您可以在htaccess文件中执行此操作:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?siteone.com$ [NC]
RewriteRule ^(.*)$ http://www.anothersite.com/siteone/$1 [L,P]

这样,当您访问http://siteone.com/some/path/时,请求将被反向代理到http://www.anothersite.com/siteone/some/path/,并且该请求中的内容将被发送到原始请求。此浏览器中的网址仍为http://siteone.com/some/path/

为了处理重定向等内容,您需要设置ProxyPassReverse以便位置标头获取属性重写:

ProxyPassReverse / http://www.anothersite.com/siteone/

如果ProxyPassReverseCookieDomain的网站想要设置Cookie,请参阅ProxyPassReverseCookiePathwww.anothersite.com

注意:虽然ProxyPass指令只能用于vhost和服务器配置,但ProxyPassReverse指令实际上可以与mod_rewrite结合使用在htaccess文件中。