» » » Реврайт имени пользователя в субдомен.

Реврайт имени пользователя в субдомен.

Rewrite Username to Subdomain. Реврайт имени пользователя в субдомен.



Сначала вам нужно сделать ВайлдКард субдомен: " *.yoursite.com" тоесть создайте субдомен со звездочкой.
Вам нужно добавить код в .htaccess чтобы среврайтить юзернэйм в субдомен.
Например:
было http://yoursite.com/UserName а будет .yoursite.com

в настройках апача в виртуалхосте нужно прописать еще ServerAlias например часть моего:
смотрите на *.мой-сайт.ком

<VirtualHost *:80>
  ServerName www.мой-сайт.ком
  ServerAlias мой-сайт.ком
  ServerAlias *.мой-сайт.ком
  DocumentRoot "E:/WWW/www/"
  CustomLog logs/мой-сайт.ком_access.log combined
  ErrorLog logs/мой-сайт.ком_error.log
</VirtualHost>


ищем в .htaccess код:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /profile.php?user=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)?$ /profile.php?user=$1$2 [L]


заменяем его на:

RewriteCond %{REQUEST_URI} !^/profile\.php
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^(.+)\.yoursite\.com
RewriteRule .* /profile.php?user=%1 [L]

RewriteCond %{REQUEST_URI} !^/profile\.php
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^(.+)\.yoursite\.com
RewriteRule .* /profile.php?user=%1%2 [L]


ну естественно ваш домен тут нужно прописать.

далее открываем include/class_url.php

находим и меняем весь блок function url_create($file, $user)
на:

function url_create($file, $user)
  {
   global $setting;

   $url_conversion = $this->convert_urls[$file];
   if( $setting['setting_url'] == 1 )
    {
    
     if(isset($url_conversion['url_subdomain']))
     {
     $new_url = '';
     $this->url_base = "http://".$user.".".$_SERVER['HTTP_HOST'].$server_info."/";
     }
     else
     $new_url = $url_conversion['url_subdirectory'];
    
}
    else
    {
     $new_url = $url_conversion['url_regular'];
    
    
   }

   $num_args = func_num_args();
   $search = Array('$user');
   $replace = Array($user);
   for($a=2;$a<$num_args;$a++)
    {
     $search[] = '$id'.($a-1);
     $replace[] = func_get_arg($a);
     $arg.=func_get_arg($a);
   }
    
   $new_url = str_replace($search, $replace, $new_url);
      return $this->url_base.$new_url;
}




далее в этом-же файле находим function &getSettings() там есть код:
// Special case -_-
        $url_settings['profile'] = array(
          'url_regular' => 'profile.php?user=$user',
          'url_subdirectory' => '$user/'
        );


меняем его на:


// Special case -_-
        $url_settings['profile'] = array(
          'url_regular' => 'profile.php?user=$user',
          'url_subdirectory' => '$user/',
          'url_subdomain' => '$user'
        );


ну и остается автозаменой текста во всех файлах сменить ссылки с относительных на полный путь. тоесть например найти:
./images/ и заменить это на
http://yoursite.com/images/
так-же со ссылками на misc_js.php идт итп в меню вверху тоже.
иначе все будет ссылаться на несуществующие директории.
ибо зайдя на профиль .yoursite.com
картинка уже будет искаться тут
.yoursite.com/images...
ибо в СЕ ведь прописаны относительные URL.
это все несложно сделать программами автозамены такими как текст реплэйсер итд.
лично у меня все отлично работает.
далее хочу сделать субдомен URL для альбомов итд
например albums.yoursite.com/UserName... blogs.yoursite.com/UserName итд

Авторы
MechanisM и Gumslone

Другие публикации по теме:

Комментарии