共享主机上的子文件夹重定向到子域的问题

共享主机上的子文件夹重定向到子域的问题

情况是这样的:我在一个共享主机上运行着几个不同的 Web 项目。项目“A”通过子域名访问(subA.mydomain.com) 尽管项目 B是主要的我的域名

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)打开。我尝试添加重定向规则以指向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]

但网址仍然显示mydomain.com/subA显示的网站是项目 A(由于它是不同的网络项目,因此显然缺少图像和静态文件)。

为何重定向不起作用?

答案1

除非您有RewriteBase /某个地方,否则^subA\/?$不会匹配任何内容。 Mod_rewrite 会查看整个 url,包括前导 /。 尝试:

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

另外,你可以放松对转义的约束。这不会造成任何损害,但也没有任何帮助,而且会使阅读变得更加困难。

答案2

看来以下行有效(并删除了之前的正则表达式繁重的重定向代码):

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

谢谢大家!

答案3

mydomain.com/subA 的请求 URI 是 /subA (注意没有尾随斜杠),因此不匹配

将您的重写规则更改为

重写规则 ^subAhttp://subA.mydomain.com/[右=301,左]

相关内容