我已将域名设置为将所有通配符子域指向我的网络服务器。我想要做的是根据我在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.php
或group.php
答案 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';
}
}