客户在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]