2017-02-21 51 views
-2

У меня проблема с маршрутизацией поддомена подстановочных знаков. Я добавил *.website.com и добавлю псевдоним сервера. subdomain.website.com показаны website.com.Рамка - поддомен подстановочного сайта website.com/user/username для username.website.com

Но я хочу subdomain.website.com, чтобы показать website.com/user/username/. print_r($_GET) возвращает меня array([user/username] =>).

PS: любые другие веб-страницы (такие как контакт, о странице и т. Д.) Будут показаны как username.website.com/page (Другие примеры: username.website.com/contact, username.website.com/news/id/news-name.html и т. Д.).

Как я могу решить эту проблему?

+0

Почему -2 голос ???? Является ли это настолько плохим или непонятным вопросом? –

ответ

1

-настроить ваш DNS принять * .domain.com
-настроить * .domain.com подстановочного псевдонима на апаче (виртуальный хост поиск на Google, есть много учебников)
3 Получить текущее имя домена в $ _SERVER PHP глобального переменные, и сделать свою собственную магию, используя логику.
Obs: Если вы задерживаете для настройки сервера, сохраняются becouse не так просто, не забывайте рестарт апаш после настройки виртуального хоста

+0

И мне не нужно использовать htaccess? –

+0

Вы будете использовать .htaccess для дружественной настройки URL-адреса, но не для конфигурации поддомена –

+0

Htaccess Я уже написал и работает. :), но теперь мне нужно отредактировать маршрутизацию для поддомена –

0

Если я иду в URL: subdomain.example.com/test -> print_r (_GET $) показывает мне:

Array([user/subdomain], [test]) 

Если я иду в URL: example.com/user/subdomain/test -> print_r ($ _ GET) показывает мне:

Array([user/subdomain/test]) 

Это мой Htaccess код:

RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ [NC] 
RewriteRule (?!^$)^.*$ http://example.com/user/%1 [P,NC,L] 

Итак, я редактировал свой код в маршрутизатор таким образом:

$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); 
$method = $_SERVER['REQUEST_METHOD']; 

if(array_key_exists('HTTP_X_FORWARDED_HOST', $_SERVER) && count($_GET) >= 2) { 
     $subdomain = $_SERVER['HTTP_X_FORWARDED_HOST']; 
     $sub = str_replace('.'.$_SERVER['SERVER_NAME'], '', $subdomain); 
     $arr = array_keys($_GET); 
     $uri = $uri.'/'.$arr['1']; 
    } 

if(array_key_exists('HTTP_X_FORWARDED_HOST', $_SERVER) && count($_POST) >= 2) { 
     $subdomain = $_SERVER['HTTP_X_FORWARDED_HOST']; 
     $sub = str_replace('.'.$_SERVER['SERVER_NAME'], '', $subdomain); 
     $arr = array_keys($_POST); 
     $uri = $uri.'/'.$arr['1']; 
    } 

Но я думаю, что должно быть намного лучше. Будем очень благодарны за помощь, советы :)

+0

кто-нибудь здесь? –

0

Теперь это только логика, но я предлагаю избегать ненужных сложных вещей на .htaccess, выполнять маршрутизацию на PHP и только дружественный URL-адрес на .htaccess, вы можете проверить, является ли субдомен и mock решение на PHP bootstrap index.php