Apacheredirect文件夹到子域

客户在www.domain.com/dir上有一个应用程序。 他们现在在dir.domain.combuild立了一个子域名。 子域引用存储在www.domain.com/dir中的文件。 他们现在喜欢访问www.domain.com/dir的人被redirect到dir.domain.com。

我猜我需要一个.htaccess来坐在www.domain.com/dir,如果通过www访问,redirect到子域,只是不确定的语法。

.htacess添加到属于www.domain.com/dir的目录中:

 RewriteEngine on RewriteCond ${HTTP_HOST} ^www\.domain\.com$ RewriteRule ^(.*) http://dir.domain.com/$1 [R,L] 

第一行启用mod_rewrite ,第二行检查当前请求是使用主机名www.domain.com访问资源,第三行将所有这些请求redirect到所需的目标主机名。

简单地说:

 Redirect /dir http://dir.domain.com 

djhowell几乎在那里:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ RewriteRule ^/dir(/.*)?$ http://dir.domain.com$1 [R=301,L] 

你需要RewriteRule的前导斜杠或者什么都不匹配。 (/.*)?$位表示匹配0或1斜线 – 然后是任何块,然后是URI的结尾。 (这很重要 – 没有它,我们也会匹配www.domain.com/dirsomethingelse )。

  • www.domain.com/dir -> dir.domain.com
  • www.domain.com/dir/ -> dir.domain.com/
  • www.domain.com/dir/blah.html -> dir.domain.com/blah.html

/ dir目录中的.htaccess文件中试试这个规则:

 RewriteCond %{HTTP_HOST} !=dir.example.com RewriteRule .* http://dir.example.com/$0 [L,R=301] 

或者这个规则在你的根目录下:

 RewriteCond %{HTTP_HOST} !=dir.example.com RewriteRule ^dir(/(.*))?$ http://dir.example.com/$2 [L,R=301] 

这应该工作:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ RewriteRule ^dir/(.*) http://dir.domain.com/$1 [R=301,L]