使用mod_rewrite处理非硬编码域名

时间:2010-01-10 21:58:23

标签: mod-rewrite subdomain

我正在迁移我的应用程序,该应用程序为每个用户提供从domain.com/~user到user.domain.com的子网站。为此,我写了以下RewriteRule

RewriteRule ^~([a-z_]+)(/.*)?$ http://$1.%{HTTP_HOST}$2 [R=301,QSA,NC]

但是,%{HTTP_HOST}并不能完全满足我的需求,因为如果用户浏览到www.domain.com/~user,它会重定向到user.www.domain.com,这显然不是什么我正在寻找。

我知道我可以用硬编码域替换%{HTTP_HOST},但我也不想这样做,因为我将在多个域上推出更改而不想自定义它适用于每一个人。有没有更好的方法在没有硬编码的情况下进行单一变化? (此外,如果基本域已有子域,即{。sub.domain.com/~user - > user.sub.domain.com

1 个答案:

答案 0 :(得分:1)

使用此附加RewriteCond

进行尝试
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^~([a-z_]+)(/.*)?$ http://$1.%2$2 [R=301,QSA,NC]

如果存在,这将从主机中删除www.前缀。