Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ЧПУ: создание домена третьего уровня
 
 автор: Roo$   (06.06.2011 в 14:01)   письмо автору
 
 

Добрый день! Помогите пож. мне со следующим вопросом. У меня есть URL сдедующего вида

http://mysite.ru/blog/blogname/news
а мне нужно его сделать вот таким
http://blogname.mysite.ru/news
т.е. через htaccess получить мне его домен 3го уровня и затем обрабаотов вывести пользователю новсти нужного блога.

  Ответить  
 
 автор: cheops   (06.06.2011 в 14:18)   письмо автору
 
   для: Roo$   (06.06.2011 в 14:01)
 

А домен третьего уровня реально существует?

  Ответить  
 
 автор: Roo$   (06.06.2011 в 14:21)   письмо автору
 
   для: cheops   (06.06.2011 в 14:18)
 

Нет не существует, т.к. его значение (название блога) может быть хоть каим и хоть скока. И каждый раз лесть в админку и создовать его тож как то не охото ))

  Ответить  
 
 автор: cheops   (06.06.2011 в 14:34)   письмо автору
 
   для: Roo$   (06.06.2011 в 14:21)
 

Без реального домена третьего уровня ничего не выйдет, у вас просто не будет заполняться переменная окружения SERVER_NAME и вы не сможете пустить в действия RewriteRule. Сервисы, которые делают такие домены, как правило, автоматизируют процесс создания доменов третьего уровня. Если вы хотите что-то подобное у себя реализовать, вам придется каждый раз лазить в систему администрирования. Причем нужен не абы какой домен третьего уровня, а привязанный папке основного домена, чтобы можно было воспользоваться каталогом /blog/

  Ответить  
 
 автор: Roo$   (06.06.2011 в 15:03)   письмо автору
 
   для: cheops   (06.06.2011 в 14:34)
 

>чтобы можно было воспользоваться каталогом /blog/
Впринципе он в УРЛе чисто для красоты.. чтоб было понятно что за ним следует название блога.. а постути самого каталога и вней ничего не будет.

Получается нужно создать все нужные домены 3го уровня которые будут вести все в корневой каталог домена второго уровня. А там через RewriteRule вытащу все переменные и отправлю их index.php на обработку, так ведь?!

  Ответить  
 
 автор: cheops   (06.06.2011 в 15:21)   письмо автору
 
   для: Roo$   (06.06.2011 в 15:03)
 

Да, только еще через RewriteCond нужно проверить, что вам передан домен третьего уровня, а не второго.

PS Хотя при создании доменов третьего уровня иногда удобнее сразу закоротить их на подпапки с нужными блоками (если, конечно, это хостинг позволяет), тогда rewrite-преобразования вообще не потребуются.

  Ответить  
 
 автор: Roo$   (06.06.2011 в 15:35)   письмо автору
 
   для: cheops   (06.06.2011 в 15:21)
 

>олько еще через RewriteCond нужно проверить, что вам передан домен третьего уровня, а не второго.

Помогите плиз.. сразу составить запрос такой )) Дапустим домены третего уровня созданны и они все ссылаются на один и отоже каталог. Нужно через htaccess пропарсить URL и передать параметры index.php ))

  Ответить  
 
 автор: cheops   (06.06.2011 в 15:39)   письмо автору
 
   для: Roo$   (06.06.2011 в 15:35)
 

Я тестировал вашу проблему на доменах test.dev и blogname.test.dev. У меня вот что получилось
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_NAME} ^blogname.test.dev$
RewriteRule index.php blog/index.php [L]

  Ответить  
 
 автор: Roo$   (06.06.2011 в 15:48)   письмо автору
 
   для: cheops   (06.06.2011 в 15:39)
 

А как учесть в скрипте то что blogname - переменная которая будет принимать все время разные значения?!

  Ответить  
 
 автор: cheops   (06.06.2011 в 15:50)   письмо автору
 
   для: Roo$   (06.06.2011 в 15:48)
 

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

  Ответить  
 
 автор: Roo$   (06.06.2011 в 22:09)   письмо автору
 
   для: cheops   (06.06.2011 в 15:50)
 

А если я в конфиге сервака укажу псевдонимы


ServerName test.dev
ServerAlias *.test.dev


То он откроет мне любой домен 3го уровня (да и не тог 3-го). А затем какнитьтаг (но не канает)

RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_NAME} ^(.*).test.dev$
RewriteRule ^(.*).test.dev$ index.php=$1 [L]


иль уже на крайняк парсить URL и вытаскивать значение домена третьего уровня (если через htaccess не выйдет)?!

  Ответить  
 
 автор: cheops   (06.06.2011 в 22:19)   письмо автору
 
   для: Roo$   (06.06.2011 в 22:09)
 

Псевдоним скорее всего не подойдет, так как ServerName у вас все-равно будет оставаться test.dev, именно это значение пойдет в SERVER_NAME и условие не сработает.

  Ответить  
 
 автор: Roo$   (06.06.2011 в 22:37)   письмо автору
 
   для: cheops   (06.06.2011 в 22:19)
 

Прописал в конфиге
ServerAlias *.test.dev 

Сайт (test.dev) теперь открывается с любым поддоменом (3,.. уровн), в принципе что и нужно было. Все же меня избавит это от ручного добавления (создания) DNS 3его уровня. Через
RewriteRule ^(.*).test.dev$ index.php=$1 [L]
не канает.... походу придется парсить URL и получать сам преффикс (домен 3его уровня)

  Ответить  
 
 автор: Roo$   (06.06.2011 в 23:01)   письмо автору
 
   для: Roo$   (06.06.2011 в 22:37)
 

ооо хотя вот так же можно ))

RewriteCond %{HTTP_HOST} ^(.*).test.dev$
RewriteRule index.php index.php?qwqw=%1  [L]

  Ответить  
 
 автор: Roo$   (06.06.2011 в 23:12)   письмо автору
 
   для: Roo$   (06.06.2011 в 23:01)
 

млин чет не пойму.. этот ServerAlias работает как то через раз... то отображает страничку.. то вылетает надпись Невозможно отобразить страницу (:

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования