mod_rewrite .htaccess子域重定向

时间:2012-09-02 13:56:18

标签: regex .htaccess mod-rewrite redirect subdomain

我花了最近2天搜索并了解.htaccess将所有子域重定向到用户文件夹 没有改变网址,但我一直有3个小问题。我真的很感激一些帮助

问题1)

如果我转到http://www.example.com/users/foo,它会自动重定向 http://foo.example.com/的网址,但如果我转到http://www.example.com/users/foo/dashboard.php 它什么都不做,而不是重定向到http://foo.example.com/dashboard.php

这是我使用的代码:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /users/(.+)/\ HTTP/
RewriteRule ^users/([^/]+)/(.*)$ http://$1.example.com/$2 [R=301,L]

问题2)

如果我去http://foo.example.com/dashboard.php

它从http://www.example.com/users/foo/dashboard.php

获取其信息

但如果我在地址栏中输入foo.example.com(在firefox中),它(有时)会自动重定向 到www.foo.example.com,我可以阻止www前缀吗?

这是代码

RewriteCond %{REQUEST_URI} !^/users/
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST} ([^.]+)\.example\.com
RewriteRule (.*) /users/%1/$1 [L]

问题3)

广告系列网站位于http://www.example.com/website文件夹中,但应该是 在网址http://www.example.com/上显示(就像我从http://www.example.com/users/foo获取信息一样 在网址http://foo.example.com/)上。

1 个答案:

答案 0 :(得分:0)

关于问题我只会检查主持人:

RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^users/([^/]+)/(.*)$ http://$1.domain.com/$2 [R=301,L]

关于问题第二,这是我从drupal .htaccess文件中获得的修改后的规则:

# remove www prefix
RewriteCond %{HTTP_HOST} ^www\.(.+)\.domain\.com$ [NC]
RewriteRule ^ http://%1%.domain.com{REQUEST_URI} [L,R=301]

# redirect to the subdirectory
RewriteCond %{HTTP_HOST} !^www\.(.+)\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ [NC]
RewriteRule ^ user/%1%{REQUEST_URI} [L,R=301]

关于你的第三个问题,请点击此处查看:

RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^(.*)$ website/$1 [R=301,L]