PHP中的子域重写

时间:2011-12-20 15:19:49

标签: php url-rewriting

我已将域名设置为将所有通配符子域指向我的网络服务器。我想要做的是根据我在wildcardsubdomain上收到的值执行重写网址。

这是一个特定的场景,我不知道如何过来。

username.mydomain.com重写为mydomain.com/user.php?userid=username

&安培;

groupname.mydomain.com重写为mydomain.com/group.php?groupid=groupname

我在桌面上存储我的数据库,如下所示。

john->userid
technology->groupid
steve->userid
Macleen->userid
Sports->groupid

这有助于以编程方式实现这一点吗?如何使用rewriteURL实现此目的?

  

我还想保留页面的URL,直到   用户从user.phpgroup.php

导航到另一个页面

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.mydomain\.com$ [NC]
RewriteRule ^$ file.php?id=%1 [L]

然后你可以在file.php中放置一些id检查以确定它是用户名还是组名,只有当你有两个组合的唯一id时才会起作用,因为没有办法将random.mydomain从random.mydomain.com。

然后您可以使用javscript格式化网址:

 history.pushState({path: "url"}, "", "http://random.mydomain.com/user");

答案 1 :(得分:1)

index.php:

<?php
if(preg_match('/([a-z]+).mydomain.com/i', $_SERVER['SERVER_NAME'], $matches)){
  $subdomain = $matches[1];
  if(YourModel::isGroupName($subdomain)){
    $_GET['groupid'] = $subdomain;
    require './group.php';
  } else {
    $_GET['userid'] = $subdomain;
    require './user.php';
  }
}