【问题标题】:Dealing with non-hardcoded domain names with mod_rewrite使用 mod_rewrite 处理非硬编码域名
【发布时间】:2010-01-11 06:01:40
【问题描述】:

我正在迁移我的应用程序,该应用程序为每个用户提供一个子站点,从 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

【问题讨论】:

    标签: mod-rewrite subdomain


    【解决方案1】:

    试试这个额外的RewriteCond

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      相关资源
      最近更新 更多