将子文件夹redirect到共享主机上的子域

下面是情况:我有一个共享主机上运行的几个不同的Web项目。 项目“A”通过子域subA.mydomain.com )访问,而项目“B”是主要的mydomain.com

A和B都是主机的public_html文件夹中的符号链接:

ln -s /home/myhost/ProjectA ~/public_html/subA ln -s /home/myhost/ProjectB ~/public_html/main 

子域( 项目A )正常工作,网站正在运行。 对于“B”这是主要的领域,我已经使用.htaccess指向主文件夹到这里写的子文件夹。 该域名网站也工作正常。

问题是当我做mydomain.com/subA ,子域名网站( 项目A )打开。 我尝试添加redirect规则指向mydomain.com/subA – > subA.mydomain.com像这样:

 RewriteCond %{HTTP_HOST} ^mydomain.com$ [OR] RewriteCond %{HTTP_HOST} ^www.mydomain.com$ RewriteRule ^subA\/?$ "http\:\/\/subA\.mydomain\.com\/" [R=301,L] 

但url仍然读取mydomain.com/subA和显示的网站是项目A(与图像和静态文件显然缺less作为一个不同的Web项目)。

为什么不redirect工作?

除非你有一个RewriteBase /某处, ^subA\/?$不会匹配任何东西。 Mod_rewrite查看整个url,包括前导/。 尝试:

 RewriteRule ^/subA/?$ http://subA.mydomain.com/ [R=301,L] 

另外,你可以放松逃跑。 它并没有受到伤害,但也没有任何帮助,而且更加难以阅读。

看起来下面的行工作(并删除较早的正则expression式redirect代码):

 RedirectMatch 301 /subA/ http://subA.mydomain.com/ 

谢谢大家!

mydomain.com/subA的请求URI是/ subA(注意没有结尾斜杠),它们不匹配

改变你的重写规则

RewriteRule ^ subA http://subA.mydomain.com/ [R = 301,L]