我正在迁移我的应用程序,该应用程序为每个用户提供从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
)
答案 0 :(得分:1)
使用此附加RewriteCond
:
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^~([a-z_]+)(/.*)?$ http://$1.%2$2 [R=301,QSA,NC]
如果存在,这将从主机中删除www.
前缀。