2014-11-05 86 views
1

我有一个网站的动态子域名基于使用php解析的注册用户名,并为我的htaccess工作没有问题。 这里是重定向从$ _ SERVERhtaccess域名映射规则和保留当前配置

thecspace.com/blogs

["QUERY_STRING"]   => string(21) "template=www&q=blogs/" 

http://www.thecspace.com/blogs/test-pp-blog-2904

["QUERY_STRING"]   => string(38) "template=www&q=blogs/test-pp-blog-2904" 

http://danvlad.thecspace.com/blogs/test-pp-blog-2904

["QUERY_STRING"]   => string(47) "template=danvlad&q=blogs/test-pp-blog-2904" 

当前的.htaccess

如何工作的一些示例
RewriteCond %{HTTP_HOST} ^thecspace\.com$ [NC] 
RewriteRule ^(.*)$ http://www.thecspace.com/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)?\.thecspace\.com 
RewriteRule ^$ index.php?template=%2 [L,QSA] 

RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)?\.thecspace\.com 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule (.*) index.php?template=%2&q=$1 [L,QSA] 

现在到了困难的部分。我想允许自定义域使用相同的规则。假设devdemogroup具有域devdemogroup.com。一旦他们将DNS更改为指向domain.com,我希望能够允许该域使用来自domain.com的当前代码。

因此,理论上对www.danvlad.com的请求将是此查询字符串

["QUERY_STRING"]   => string(47) "template=danvlad" 

和www.danvlad.com/blogs/

["QUERY_STRING"]   => string(47) "template=danvlad&q=blogs" 

我已经试过,但它不会工作

RewriteCond %{HTTP_HOST} !^www\.thecspace\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^([^.]+)\.thecspace\.com$ [NC] 
RewriteRule ^$ /index.php?template=%1 [L] 

RewriteCond %{HTTP_HOST} !^www\.thecspace\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.thecspace\.com$ [NC] 
RewriteRule ^$ /index.php?template=%1 [L] 

RewriteCond %{HTTP_HOST} !^www\.thecspace\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.com$ [NC] 
RewriteRule ^$ /index.php?template=%1 [L] 

RewriteRule ^(.*)$ /index.php?template=%1?q=$1 [L,QSA] 

任何人都可以帮忙吗? 谢谢

回答

1

其实你最后RewriteRule是没有条件,使用这样的:

RewriteCond %{HTTP_HOST} !^www\.thecspace\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+)\.thecspace\.com$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /index.php?template=%1?q=$1 [L,QSA] 
+0

不工作,http://devdemogroup.thecspace.com/blogs返回404. – Ovidiu 2014-11-05 10:54:05

+0

好吧现在尝试我的更新规则。 – anubhava 2014-11-05 10:56:52

+0

devdemogroup.thecspace.com/blogs现在重定向到www.thecspace.com 和devdemogroup.com未设置模板devdemogroup – Ovidiu 2014-11-05 11:01:08

0

最终解决

Route53 thecspace.com区 danvlad .thecspace.com CNAME www.thecspace。 com www.danvlad.thecspace.com CNAME www.thecspace.com

danvlad区域 www.danvl ad.com CNAME www.thecspace.com

有FollowSymLinks 的AllowOverride所有 允许所有 的DirectoryIndex index.php文件

# Redirect thecspace.com and cspace.thecspace.com to www.thecspace.com 

RewriteCond %{HTTP_HOST} ^thecspace\.com$ [NC] [OR] 
RewriteCond %{HTTP_POST} ^cspace.thecspace.com$ [NC] 
RewriteRule ^(.*)$ http://www.thecspace.com/$1 [R,L,QSA] 

# Redirect abc.thecspace.com to www.thecspace.com/index.php?template=abc&q=zzz 

RewriteCond %{HTTP_HOST} !^www\.thecspace\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^([^.]+)\.thecspace\.com$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.*)$ /index.php?template=%1&q=$1 [L] 

# Redirect www.abc.thecspace.com to www.thecspace.com/index.php?template=abc&q=zzz 

RewriteCond %{HTTP_HOST} !^www\.thecspace\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.thecspace\.com$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.*)$ /index.php?template=%1&q=$1 [L] 

# Redirect www.abc.com to www.thecspace.com/index.php?template=abc&q=zzz 

RewriteCond %{HTTP_HOST} !^www\.thecspace\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.com$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.*)$ /index.php?template=%1&q=$1 [L] 

# Redirect www.thecspace.com 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME) !^$ 
RewriteRule ^(.*)$ /index.php?q=$1 [L] 

也许它可以帮助别人。