Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用.htaccess将url重写到文件不在的另一个域?_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

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

是否可以使用.htaccess将url重写到文件不在的另一个域?,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,网站位于 我想将url重写为类似于或子域的内容 该网站将仅在托管,不会将任何文件移动或复制到其他网站 是否可以使用.htaccess执行此操作,或者是否有其他方法执行此操作 编辑(下面是我在本地主机的htaccess中所做的,它似乎不起作用)。不知道我做错了什么。我不想在这个阶段弄乱现场 RewriteCond %{HTTP_HOST} /localhost/mysite [NC] RewriteRule ^(.*)$ http://www.anothersite.com/siteone/$1

网站位于 我想将url重写为类似于或子域的内容

该网站将仅在托管,不会将任何文件移动或复制到其他网站

是否可以使用.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/

只要加载了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/
,该请求的内容将发送到原始请求。这会使浏览器中的URL保持
http://siteone.com/some/path/

为了处理重定向之类的事情,您需要设置一个属性,以便位置头被重写:

ProxyPassReverse / http://www.anothersite.com/siteone/
如果
www.anothersite.com
上的站点想要设置cookie,请参见,
ProxyPassReverseCookieDomain
ProxyPassReverseCookiePath


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

我猜这是在原始站点的htaccess中完成的,对吗?要使其正常工作,这两个域是否必须由同一主机托管,或者这无关紧要?@user1448031是的,这需要位于siteone.com站点文档根目录中的htaccess文件中。这两个域不需要托管在同一台主机上,甚至不需要托管在同一个网络上。只要托管siteone.com的服务器可以访问anothersite.com网站,我就不确定我是否做错了什么。我在本地主机的htaccess中尝试了它,但似乎不起作用。我尝试了这个
RewriteCond%{HTTP\u HOST}/localhost/mysite[NC]
RewriteRule^(.*)$http://www.anothersite.com/siteone/$1[L,P]
ProxyPassReverse/localhost/mysitehttp://www.anothersite.com/siteone/
@user1448031
%{HTTP\u HOST}
与“HOST”请求字段匹配,其中没有路径,它只是一个主机名,因此它不能包含
/
字符或路径。请参阅我提供的mod_proxy链接,这对于
ProxyPassReverse