我使用vhosts在两个不同的子域上运行Apache的同一个网站。
www.vhost1.com
www.vhost2.com
每当有人访问www.vhost1.com
上的特定子文件夹时,我都希望将用户重定向到www.vhost2.com
上的同一子文件夹。
实施例:
用户访问www.vhost1.com/my-special-folder
用户应重定向到www.vhost2.com/my-special-folder
每当有人在www.vhost2.com
上并访问除该子文件夹以外的任何内容时,我希望将用户重定向到www.vhost1.com/any-other-url
实施例:
用户访问www.vhost2.com/any-other-url
用户应重定向到www.vhost1.com/any-other-url
此外,如果用户访问www.vhost2.com
(没有路径),则应将用户重定向到www.vhost1.com
实施例:
用户访问www.vhost2.com
用户应重定向到www.vhost1.com
我已经尝试了几种不同的Apache重定向规则,并且已经有几种方案可以使用,但我无法让它们全部同时工作。
由于服务器配置,我必须使用.htaccess文件执行重定向。
Apache规则应该是什么?
答案 0 :(得分:2)
将此规则放在两个域的root .htaccess中:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?vhost1\.com$ [NC]
RewriteRule ^(my-special-folder)(/.*)?$ http://www.vhost2.com/$1$2 [L,NC,NE.R=302]
RewriteCond %{HTTP_HOST} ^(www\.)?vhost2\.com$ [NC]
RewriteRule ^((?!my-special-folder/).*)$ http://www.vhost1.com/$1 [L,NC,NE,R=302]