PHP中的子域重写URL
我已将我的域设置为将所有通配符子域指向我的Web服务器。我想做的是根据我在通配符子域上收到的值执行重写url 这是一个具体的情况,我不知道如何克服PHP中的子域重写URL,php,url-rewriting,Php,Url Rewriting,我已将我的域设置为将所有通配符子域指向我的Web服务器。我想做的是根据我在通配符子域上收到的值执行重写url 这是一个具体的情况,我不知道如何克服 username.mydomain.com重写为mydomain.com/user.php?userid=username & groupname.mydomain.com重写为mydomain.com/group.php?groupid=groupname 我将以下类型存储在表上的数据库中 john->userid technology-&g
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
这有助于通过编程实现这一点吗?如何使用URL实现此目标
我还想保持网页的URL的原样,直到
用户从user.php
或group.php
请尝试以下操作:
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.com与random.mydomain.com分开
然后,您可以使用javscript格式化url:
history.pushState({path: "url"}, "", "http://random.mydomain.com/user");
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';
}
}