使用htaccess将所有虚拟子域重写为同一文件夹

时间:2011-04-14 02:04:46

标签: .htaccess mod-rewrite url-rewriting subdomain

我一直在寻找互联网,试图找到解决这个问题的方法,但找不到明确的解决方案。

我正在尝试重定向重写

  

anything.domain.com/anypage.php?sub=anything&including=get_parameters

  

domain.com/users/anypage.php?sub=anything&including=get_parameters


我找到了几个可能解决方案的页面,但它们都与我的需求略有不同,编辑它们会不断失败。

非常感谢任何帮助。谢谢。

P.S Wildcard DNS已启用,所有内容都在apache中正确设置。

修改:

我最终使用了下面的内容,似乎工作得很好。感谢。

RewriteCond %{HTTP_HOST}
^(.*).domain.com RewriteCond
%{HTTP_HOST} !^www.domain.com [NC]
RewriteRule ^(.*)$
http://domain.com/users/$1?sub=%1 [P]

1 个答案:

答案 0 :(得分:4)

在.htaccess文件中尝试此规则:

Options +FollowSymLinks
RewriteEngine on

# redirect for http
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com$ [NC]
RewriteCond %{SERVER_PORT} =80
RewriteRule ^(.*)$ http://domain.com/users/$1?sub=%1 [R=301,QSA,L,NE]

# redirect for https
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com$ [NC]
RewriteCond %{SERVER_PORT} =443
RewriteRule ^(.*)$ https://domain.com/users/$1?sub=%1 [R=301,QSA,L,NE]

R=301 will redirect with https status 301
L will make last rule
NE is for no escaping query string
QSA will append your existing query parameters

$1 is your REQUEST_URI