перезапись поддоменов в PHP - PullRequest
2 голосов
/ 20 декабря 2011

Я настроил свой домен так, чтобы все подстановочные субдомены указывали на мой веб-сервер. То, что я хотел бы сделать, это выполнить 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

Было бы это полезно для достижения этого программно? Как я могу добиться этого с помощью rewriteURL?

И я также хотел бы сохранить URL страницы как есть до пользователь переходит на другую страницу с user.php или group.php

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

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';
  }
}
1 голос
/ 20 декабря 2011

Попробуйте следующее:

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, чтобы выяснить, является ли это имя пользователя или группы, сработает, только если у вас есть уникальные идентификаторы для обоих вместе взятыххотя, поскольку нет никакого способа отделить random.mydomain.com от random.mydomain.com.

Вы можете затем использовать javscript для форматирования URL:

 history.pushState({path: "url"}, "", "http://random.mydomain.com/user");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...