0

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

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

到目前为止我所管理的:

  1. 更改 DNS 以支持通配符 *.mydomain.dk
  2. 从我的主域(www.simon-smith.dk)进行 .htaccess 重定向
  3. 成功查看mydomain.dk页面

现在的问题是,我有几个网站共享相同的 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]

我可以毫无问题地从 url 访问 subrequest 参数,但 url 参数不再注册。

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

4

1 回答 1

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]
于 2013-07-11T17:57:44.660 回答