форум vBSupport.ru > vBulletin > Вопрос — Ответ
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
Pavlik
Продвинутый
Default Субдомены с помощью mod_rewrite
0

у меня нет доступа к конфигам апаче, поэтому хак блоги для субдоменов мне не подходит, решил все в .htaccess вручную делать для каждого блога...

банальная задача:
user1.example.ru --- > http://example.ru/blog.php?u=1
user2.example.ru --- > http://example.ru/blog.php?u=2

редирект я сделал, т.е. при вводе в адресную строку user1.example.ru открывается http://example.ru/blog.php?u=1

вопрос: как сделать, чтобы в адресной строке так и отображалось user1.example.ru?
в гугле рылся, варианты, которые там есть не заработали(

я готов для каждого юзера прописывать правила в .htacces и создавать домены, если надо...

ну и нужно для постов в блоге тоже самое, т.е чтобы посты были доступны по user1.example.ru/post1, например.

Заранее спасибо и извиняюсь за то, что поднимаю избитую тему.
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
InSAn
Продвинутый
 
InSAn's Avatar
Default
1

Quote:
Originally Posted by Pavlik View Post
редирект я сделал, т.е. при вводе в адресную строку user1.example.ru открывается http://example.ru/blog.php?u=1

вопрос: как сделать, чтобы в адресной строке так и отображалось user1.example.ru?
Убрать флаг [R]
т.е. вместо
Code:
RewriteRule .* http://site.com/ [R=301,L]
использовать
Code:
RewriteRule .* http://site.com/ [L]
 
 
Pavlik
Продвинутый
Default
0

у меня редирект сделан деревенским методом))
то есть я создал субдомен user1.example.ru и в папке public_html/example/user1 у меня лежит файл .htacces , в котором прописано:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^user1.example.ru$ [OR]
RewriteCond %{HTTP_HOST} ^www.user.example.ru$
RewriteRule ^/?$ "http\:\/\/example\.ru\/blog.php?u=1" [L]

это работает и меня устраивало бы, если бы при этом в адресной строке не было http://example.ru/blog.php?u=1

Pavlik добавил 29.01.2011 в 15:09
как-то у меня вообще не получается изменить ссылки...
я с mod_rewrite впервые работаю, так что поправьте меня, если я не прав...
в корне форума лежит .htacces с содержанием:
RewriteEngine on
RewriteRule ^([a-z0–9]+)/\.html$ /blog.php?u=$1 [NC]
который должен преобразовать ссылку вида example.ru/blog.php?u=1 в example.ru/1.html
я все правильно понимаю? именно такое преобразование мне не нужно, я просто простейший пример взял...
у меня не работает

mod_rewrite должен быть включен, он в phpinfo в списке Loaded Modules

Last edited by Pavlik : 01-29-2011 at 04:09 PM. Reason: Добавлено сообщение
 
 
netwind
Гуру
 
netwind's Avatar
Default
1

ты не сможешь это сделать через mod_rewrite, потому что тебе сначала нужно создать virtualhost который будет открывать все возможные домены
типа <virtualHost *.domain.ru>

впрочем, есть еще варианты прописать IP <virtualHost 12.34.56.78>
 
 
Pavlik
Продвинутый
Default
0

Мне саппорт хостинга сказал, что виртуал хост создается автоматически при создании субдомена...
Если это так, то возможно ли все таки это сделать, если я готов для каждого блога создавать поддомен и отдельно для каждого прописывать mod_rewrite? DNS записи еще по мере надобности могу прописывать...
 
 
InSAn
Продвинутый
 
InSAn's Avatar
Default
2

Quote:
Originally Posted by Pavlik View Post
у меня редирект сделан деревенским методом))
Нормальный метод

Quote:
Originally Posted by Pavlik View Post
Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^user1.example.ru$ [OR]
RewriteCond %{HTTP_HOST} ^www.user.example.ru$
RewriteRule ^/?$ "http\:\/\/example\.ru\/blog.php?u=1" [L]
Некоторые дополнения.
1) добавить флаг [NC] - имя домена могут и с капслоком набрать
2) экранировать символы в целевом урле не нужно
т.е. должно быть так:
Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^user1.example.ru$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.user.example.ru$ [NC]
RewriteRule ^/?$ "http://example.ru/blog.php?u=1" [L]
Почему показывается УРЛ после переадресации при отсутствии флага [R] - нужно спросить у хостера. Подозреваю, что у хостинг - выделенный ВДС: встречал такой "глюк" только на нем, на обычном выделенном серваке такого не было...
 
 
netwind
Гуру
 
netwind's Avatar
Default
1

Quote:
Originally Posted by Pavlik View Post
Мне саппорт хостинга сказал, что виртуал хост создается автоматически при создании субдомена...
Если это так, то возможно ли все таки это сделать, если я готов для каждого блога создавать поддомен и отдельно для каждого прописывать mod_rewrite? DNS записи еще по мере надобности могу прописывать...
дело хлопотное, но принципиальных проблем нет.
 
 
Pavlik
Продвинутый
Default
0

Спасибо большое за советы, написал в саппорт хостинга с подробным изложением проблемы, после беседы с ними отпишусь...
InSAn, этот код также не работает =(

да чего уж скрывать, напишу без экзамплов и юзеров))

.htaccess сейчас выглядит следующим образом(тот, который в корне форума):

HTML Code:
AddDefaultCharset utf-8

RewriteEngine on
RewriteCond %{HTTP_HOST} ^pavlik.musblogs.ru$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.pavlik.musblogs.ru$ [NC]
RewriteRule ^/?$ "http://musblogs.ru/blog.php?u=1" [L]
в папке субдомена код такой:

HTML Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^pavlik.musblogs.ru$ [OR]
RewriteCond %{HTTP_HOST} ^www.pavlik.musblogs.ru$
RewriteRule ^/?$ "http\:\/\/musblogs\.ru\/blog.php?u=1" [L]
все по прежнему, редиректится, но ссылка прежняя

Pavlik добавил 30.01.2011 в 14:51
Ответ саппорта:
> 1. В Панели управления создайте поддомен pavlik.musblogs.ru
> 2. Разместите содержимое сайта musblogs.ru в поддомене pavlik.musblogs.ru
> 3. Сделайте так, чтобы при обращении к имени pavlik.musblogs.ru открывался нужный Вам URL (директива DirectoryIndex).

то есть предлагают клонировать сайт... у меня 2 гб дискового пространства и пока увеличивать не хотелось бы(( так что скорее всего реализуемо только для 10 максимум пользователей...

Last edited by Pavlik : 01-30-2011 at 03:51 PM. Reason: Добавлено сообщение
 
 
InSAn
Продвинутый
 
InSAn's Avatar
Default
1

Quote:
Originally Posted by Pavlik View Post
то есть предлагают клонировать сайт...
Попробуйте еще раз написать, мол, мне не нужно клонировать сайт. Мне нужно с поддомена делать внутреннюю переадресацию (без редиректа).
Такое ощущение, что в поддержке сидит школьник, который думает, что сайт состоит из двух фалов...
 
 
Pavlik
Продвинутый
Default
0

Quote:
Originally Posted by InSAn View Post
Попробуйте еще раз написать, мол, мне не нужно клонировать сайт. Мне нужно с поддомена делать внутреннюю переадресацию (без редиректа).
Такое ощущение, что в поддержке сидит школьник, который думает, что сайт состоит из двух фалов...
Да, я сразу так и написал и после долгого диалога мы все сделали!!!
Решение оказалось проще.
Я создавал поддомен, а надо было создавать псевдоним сайта, т.е. как отдельный домен (при этом аналогичный поддомен удалить)
и в .htaccess прописываем

HTML Code:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^pavlik.musblogs.ru$ [NC]
RewriteRule ^/?$ "blog.php?u=1" [L]
это работает вполне криво, но работает... то есть если зайти на чей-нибудь блог, введя в адресную строку user.example.ru, а потом перейти на главную нажатием ссылки, то будет адрес вида user.example.ru/index.php это пичально... еще надо как-то ссылки настроить так, чтобы при нажатии, например, на ссылку блога, адрес также имел вид user.example.ru, а не только если вводить напрямую в адресную строку...
еще кукиз надо настроить, чтобы не пришлось перелогиниться

Pavlik добавил 30.01.2011 в 16:56
если кто-то знает, как сделать что-нибудь из этого, я буду очень благодарен и не буду скупиться на Спасибо ))

Pavlik добавил 30.01.2011 в 17:05
да, четвертой строчкой надо добавить

RewriteCond %{HTTP_HOST} ^www.pavlik.musblogs.ru$ [NC]

Pavlik добавил 30.01.2011 в 17:07
а в третьей добавить OR:
RewriteCond %{HTTP_HOST} ^pavlik.musblogs.ru$ [NC,OR]

Last edited by Pavlik : 01-30-2011 at 06:07 PM. Reason: Добавлено сообщение
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 07:19 PM.


Powered by vBulletin® Version PreModed
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...