Rewrite Username to Subdomain. Реврайт имени пользователя в субдомен.
Сначала вам нужно сделать ВайлдКард субдомен: " *.yoursite.com" тоесть создайте субдомен со звездочкой.
Вам нужно добавить код в .htaccess чтобы среврайтить юзернэйм в субдомен.
Например:
было http://yoursite.com/UserName а будет http://[color=#FF0000]UserName[/color].yoursite.com
в настройках апача в виртуалхосте нужно прописать еще ServerAlias например часть моего:
смотрите на *.мой-сайт.ком
Code:
<VirtualHost *:80>
ServerName www.мой-сайт.ком
ServerAlias мой-сайт.ком
ServerAlias *.мой-сайт.ком
DocumentRoot "E:/WWW/www/"
CustomLog logs/мой-сайт.ком_access.log combined
ErrorLog logs/мой-сайт.ком_error.log
</VirtualHost>
ищем в .htaccess код:
Code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /profile.php?user=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)?$ /profile.php?user=$1$2 [L]
заменяем его на:
Code:
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)
на:
Code:
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() там есть код:
Code:
// Special case -_-
$url_settings['profile'] = array(
'url_regular' => 'profile.php?user=$user',
'url_subdirectory' => '$user/'
);
меняем его на:
Code:
// 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 идт итп в меню вверху тоже.
иначе все будет ссылаться на несуществующие директории.
ибо зайдя на профиль http://[color=#FF0000]UserName[/color].yoursite.com
картинка уже будет искаться тут http://[color=#FF0000]UserName[/color].yoursite.com/images...
ибо в СЕ ведь прописаны относительные URL.
это все несложно сделать программами автозамены такими как текст реплэйсер итд.
лично у меня все отлично работает.
далее хочу сделать субдомен URL для альбомов итд
например albums.yoursite.com/UserName... blogs.yoursite.com/UserName итд
З.Ы. c class_url.php помогал мне товарищ Gumslone, за что ему спасибо!