Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的子域重写URL_Php_Url Rewriting - Fatal编程技术网

PHP中的子域重写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

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

这是一个具体的情况,我不知道如何克服

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';
  }
}