.htaccess使用通配符子域重定向到另一个域

时间:2013-07-11 13:42:42

标签: .htaccess mod-rewrite wildcard-subdomain

我整天都在这里看了一下,虽然我已经看到了类似的问题而且我已经设法得到了我的问题的部分答案,但我仍然缺少一个主要部分。

我想要做的是,在我的系统中使用动态子域(例如username.mydomain.dk)。

到目前为止我管理的内容:

  1. 更改DNS以支持通配符* .mydomain.dk
  2. 从我的主域名(www.simon-smith.dk)
  3. 制作.htaccess重定向
  4. 成功查看mydomain.dk页面
  5. 现在问题是,我有几个网站共享相同的IP地址。 www.simon-smith.dk是主域名,mydomain.dk也在此IP上。因此,在请求* .mydomain.dk时,我将首先访问www.simon-smith.dk。从这里开始,我在.htaccess中添加了以下内容:

    # *.mydomain.dk redirectd
    RewriteCond %{HTTP_HOST} !^www\.mydomain\.dk$ [NC]
    RewriteCond %{HTTP_HOST} ^(.*)\.mydomain.dk$ [NC]
    RewriteRule ^(.*)$ http://mydomain.dk/?subrequest=%1 [P,L,QSA]
    

    这里我使用P标志来访问其他域,但显然这会阻止mydomain.dk上的重写规则,如下所示:

    # match those that do not have language code
    RewriteCond %{REQUEST_URI} !^/public/[a-z]{2}/ [NC]
    RewriteRule ^(.*)$ index.php?url=$1 [PT,L,QSA]
    
    # match those that DO have a language code
    RewriteCond %{REQUEST_URI} !^/public/js/
    RewriteRule ^([a-z]{2})/(.*)$ index.php?lang=$1&url=$2 [PT,L,QSA]
    

    我可以从网址访问subrequest参数,没有任何问题,但url参数不再注册。

    是否有办法使用.htaccess进行此重定向,或者我是否必须使用mydomain.dk作为主域的网络服务器才能正确完成重定向?

1 个答案:

答案 0 :(得分:0)

进一步挖掘并使用了一些好的试验和错误,我发现了我的错误。

在我的主域www.simon-smith.dk上,我只需要附加正确的请求uri就可以了,这样做如下:

# *.mydomain.dk redirectd
RewriteCond %{HTTP_HOST} !^www\.mydomain\.dk$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.mydomain.dk$ [NC]
RewriteRule ^(.*)$ http://mydomain.dk/$1?subrequest=%1 [P,L,QSA]