2011-04-14 66 views
2

我一直在寻找互联网,试图找到这个问题的解决方案,但找不到明确的解决方案。使用htaccess将所有虚拟子域重写为相同的文件夹

我想 重定向 改写

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

域。 com/users/anypage.php?sub = anything & includes = get_parameters


我已经发现了几页有可能的解决方案,但他们都略有不同,以我的需求,并进行编辑以失败结束持续。

任何帮助将不胜感激。谢谢。

P.S通配符DNS已启用,并且所有内容都在apache中正确设置。

编辑:

我结束了使用如下因素,似乎工作得很好。谢谢。

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

回答

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 
+0

我应该在这个问题已指定由“什么”,我的意思是,这个值是一个变量(使用者名称是精确)。 – DaveE 2011-04-14 02:14:08

+0

@dave e:我按照你的评论编辑了我的答案。 – anubhava 2011-04-14 02:17:02

+0

你不必逃避。在方括号内使用文字值。但这应该工作。并且在'$ 1'前添加'users /'以匹配示例。尼斯点添加HTTPS。 – 2011-04-14 09:29:46