Apache 我怎样才能使用;mod rewrite";将文件夹路径重定向到子域,但不使用浏览器重定向?

Apache 我怎样才能使用;mod rewrite";将文件夹路径重定向到子域,但不使用浏览器重定向?,apache,mod-rewrite,Apache,Mod Rewrite,我有一个文件,我想用mod_rewrite重定向到一个子域。例如,我想重定向http://www.mydomain.com/xyz到子域xyz.example.com 但我不想向浏览器发送重定向(因此它不知道页面是否不同) 顺便说一句,xyz是一条CNAME记录,指向www.otherdomain.com. 另一个例子,只是澄清一下。如果http://www.mydomain.com/xyz/something输入浏览器,我希望Apache返回http://xyz.mydomain.com/so

我有一个文件,我想用mod_rewrite重定向到一个子域。例如,我想重定向
http://www.mydomain.com/xyz
到子域
xyz.example.com

但我不想向浏览器发送重定向(因此它不知道页面是否不同)

顺便说一句,
xyz
是一条CNAME记录,指向
www.otherdomain.com.

另一个例子,只是澄清一下。如果
http://www.mydomain.com/xyz/something
输入浏览器,我希望Apache返回
http://xyz.mydomain.com/something

我认为这将满足您的要求:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*?)/(.*?)$ http://$1.mydomain.com/$2
这样一来,它将重定向到子文件夹的每个请求,因此,如果您链接子文件夹中的图像或css,它也将重写这些链接,如果您只想列出某些可以使用它的内容

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(blog|store|other)/(.*?)$ http://$1.mydomain.com/$2

这只会重定向mydomain.com/blog/mydomain.com/store/和mydomain.com/other/

如果这两个域位于同一台机器上,并且可以通过文件系统访问,则应该这样做。例如:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule ^([^/]+)/(.*) /absolute/path/to/subdomains/$1/$2
如果不是这样,您需要一个代理:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule ^([^/]+)/(.*) http://$1.example.com/$2 [P]

这些示例是为.htaccess文件插入的。如果您想在httpd.conf中使用它们,请在
RewriteRule
模式前面加一个

是否还需要在RewriteRule结尾加上代理[p]标志?您不需要以^/?@jcrossley3-我不确定@gahooa-是,但不是/Hi-unknowntech开始,谢谢您的帮助。“something”是一个很长的PHP查询。我使用了你提出的第一个代码,它工作了一半。它正确加载xyz子域内容,但在地址栏中显示:xyz.mydomain.com/something(而不是www.mydomain.com/xyz/something)以继续,如果我再次放入相同的地址栏:www.mydomain.com/xyz/something(并按enter键),它将再次正确加载,并保持在地址栏中(正确):www.mydomain.com/xyz/something在我按下刷新按钮后,它将加载ok,但地址栏更改为xyz.mydomain.com/something在应用该按钮时始终会修复域名。示例中显示了这一点,但我想指出,读者应该确保不通过代理提供对任何其他域的访问;这是通过在regexp中排除/作为一个字符,并仅向子域提供代理访问来实现的。