| Автор |
Сообщение |
amixen
Участник форума
Зарегистрирован: 04.07.2005
Сообщ.: 32
Карма: 0 поощрить/наказать
|
Добавлено: Вс Авг 21, 2005 12:59 pm (написано за 22 минуты 34 секунды)
Заголовок сообщения: .htaccess поддомены переадресация - Как оставить адр. строку в нетронутом состоянии?
|
|
Приветствую! Использую ЧПУ, но есть у меня задумка использовать поддомены на сайте. (Начало банальное ;) ). Хочу расширить функциональность сайта, что бы в зависимости от поддомена быбирались какието условия, например разный дизайн... За то, что под ДЕНВЕРОМ очень удобно создавать эти самые поддомены (путем создания папок) - отдельное спасибо авторам проекта!!! Действительно быстро и комфортно. Возникла маленькая проблема с переадресацией. Мой проект примерно выглядит так: /home/ /demo-site.ru /asd/ .htaccess index.php - временный с текстом: вы попали в директорию /home/asd/ /qwe/ .htaccess index.php - временный с текстом: вы попали в директорию /home/qwe/ /www/ /images/ - папка с картинками... /languages/ - языки... ........ /***/ - всякие другие папки .htaccess - основной htaccess index.php - основной индексный файл в котором все обрабатывается Мой хостер создал правила при которых, люди набирающие в строке запроса браузера: http://asd.demo-site.ru или http://qwe.demo-site.ru
попадали в директорию demo-site.ru, но в адресной строчке оставался поддомен! Ну или хотя бы както передавать название домена в виде переменной. Я хотел создать приближенную ситуацию на локале под ДЕНВЕРОМ. в /home/asd/.htaccess я прописал: RewriteRule ^(.*)$ /home/demo-site.ru/www/index.php?$1 на что получил суровое: Internal Server Error
mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary. С чего бы ему зацикливаться подумал я...?? И сделал по-другому: в /home/asd/.htaccess я прописал: RewriteRule ^(.+)$ http://demo-site.ru/index.php?$1
заработало! Но... адресная строка изменилась :( Из "http://asd.demo-site.ru" превратилась в "http://demo-site.ru" Добавил [L]: RewriteRule ^(.+)$ http://demo-site.ru/index.php?$1 [L] И вот тут я ожидал развязки, думал, что строка не изменится, но строка опять изменилась и поддомен пропал из строки ВОПРОС: Как оставить строку в нетронутом состоянии, но что бы осуществлялась переадресация?
Насчет термина "переадресации" я возможно ошибаюсь, прошу не судить.
|
|
| Вернуться к началу |
|
 |
Maus
Модератор

Зарегистрирован: 29.06.2003
Сообщ.: 7410
Карма: 242 поощрить/наказать
Откуда: пос. Омсукчан Магаданской области
|
Добавлено: Пн Авг 22, 2005 12:17 pm (спустя 23 часа 18 минут; написано за 10 минут 36 секунд)
Заголовок сообщения:
|
|
amixen
Думаю, Вам стоит еще раз внимательнее перечитать документацию по mod_rewrite, а также http://www.dklab.ru/chicken/nablas/17.html
ошибки:
Правило читается как "взять строку, содержащую хоть один символ и дописать к ней слева index.php?". Потом срабатывает правило mod_rewrite: "Если хоть одно правило сработало - перезапустить процесс с новым URI". Так что строка все время удлинялась и удлинялась... Флаг [L] означает: "Если правило сработало, не читать правила, написанные ниже, а сразу перезапустить процесс". Самым правильным, имхо, было первое прапило, но ему нужно было некоторые дополнения
| Код (Apache config): |
скопировать код в буфер обмена |
RewriteCond %{ENV:REDIRECT_RDR} ^$ RewriteRule ^(.+)$ index.php?$1 [QSA,L,E=RDR:1] # строкой выше была опечатка! |
НО, вообще говоря, и это правило не в тему, потому что mod_rewrite работает с относительными URI, то есть не содержащими имя домена. А Ваш хостер, вероятно, просто указал поддомены в директиве ServerAlias. P.S. я в вопросах хостинга не разбираюсь абсолютно. Спросите таких людей, как ДК или tIT .
Последний раз редактировалось: Maus (Пн Авг 22, 2005 4:19 pm), всего редактировалось 1 раз
|
|
| Вернуться к началу |
|
 |
amixen
Участник форума
Зарегистрирован: 04.07.2005
Сообщ.: 32
Карма: 0 поощрить/наказать
|
Добавлено: Пн Авг 22, 2005 3:15 pm (спустя 2 часа 57 минут; написано за 15 минут 2 секунды)
Заголовок сообщения:
|
|
Неа... :( Не заработало...
| Цитата: |
|
x:/home/demo-site.ru/asd/.htaccess: Invalid command 'RewRewriteRule', perhaps mis-spelled or defined by a module not included in the server configuration |
Счас попробую еще одну вещь... Счас без всяких htaccess'ов возьму в /home/...../asd/index.php пропишу внутренний редирект! Нет, ничего не получилось :( Т.е. директори меняется. Но и УРЛ тоже меняется :( И в новом урле конечно же информации уже нет в переменной:
Я просто хотел получить нечно вроде:
Что бы потом использовать это самое asd
Вобщем надо я так понял прописать
Последний раз редактировалось: amixen (Пн Авг 22, 2005 3:41 pm), всего редактировалось 1 раз
|
|
| Вернуться к началу |
|
 |
Дмитрий Кóтеров
Администратор

Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405 поощрить/наказать
|
Добавлено: Пн Авг 22, 2005 3:41 pm (спустя 26 минут; написано за 56 секунд)
Заголовок сообщения:
|
|
Вы можете создать новый виртуальный хост вручную (в httpd.conf) и прописать туда: ServerAlias asd.demo-site.ru http://qwe.demo-site.ru Причем указать DocumentRoot. Перезапускаете Денвер, и получаете как раз то, что Вам нужно.
|
|
| Вернуться к началу |
|
 |
amixen
Участник форума
Зарегистрирован: 04.07.2005
Сообщ.: 32
Карма: 0 поощрить/наказать
|
Добавлено: Пн Авг 22, 2005 3:43 pm (спустя 1 минуту 32 секунды; написано за 46 секунд)
Заголовок сообщения:
|
|
Спасибо! Maus & Дмитрий Кóтеров
Счас сделаю...
|
|
| Вернуться к началу |
|
 |
Maus
Модератор

Зарегистрирован: 29.06.2003
Сообщ.: 7410
Карма: 242 поощрить/наказать
Откуда: пос. Омсукчан Магаданской области
|
Добавлено: Пн Авг 22, 2005 4:20 pm (спустя 37 минут; написано за 46 секунд)
Заголовок сообщения:
|
|
amixen
Да опечатка там была. И я забыл на подсветку глянуть :( Поправил верхний пост
|
|
| Вернуться к началу |
|
 |
amixen
Участник форума
Зарегистрирован: 04.07.2005
Сообщ.: 32
Карма: 0 поощрить/наказать
|
Добавлено: Пн Авг 22, 2005 5:03 pm (спустя 42 минуты; написано за 8 минут 14 секунд)
Заголовок сообщения:
|
|
Дмитрий Кóтеров
Снова наткнулся на какието грабли... :(
| Код (Apache config): |
скопировать код в буфер обмена |
# # Если вы вручную хотите создать виртуальный хост со специфическими # настройками, то сделайте это сразу же после данного комментария. # Не помещайте "рукодельные" хосты в конец файла, иначе они не будут # доступны! # # В контейнер VirtualHost может включаться почти любая директива Apache. # Пример использования директивы VirtualHost: # #<VirtualHost ip.address.of.host.some_domain.com> # ServerAdmin webmaster@host.some_domain.com # DocumentRoot /www/docs/host.some_domain.com # ServerName host.some_domain.com # ErrorLog logs/host.some_domain.com-error_log # CustomLog logs/host.some_domain.com-access_log common #</VirtualHost> # #<VirtualHost _default_:*> #</VirtualHost> |
добавляю своё
| Код (Apache config): |
скопировать код в буфер обмена |
<VirtualHost lightweb.org> DocumentRoot "Z:/lightweb.org" ServerName lightweb # ServerAlias *.lightweb.org ErrorLog "Z:/lightweb.org/logs/error.log" </VirtualHost> |
правлю C:\WINNT\system32\drivers\etc\hosts
перед денверовскими строками вписываю туда строку: 127.0.0.1 lightweb.org
перезапускаю denver в адресной строке пишу: http://lightweb.org/
>> Невозможно отобразить страницу ping lightweb.org - всё ок tracert lightweb.org - всё ок а страница не отображается :( И вроде загрузка долго идёт типа что-то пытается загрузить... а потом выводит что стр. не найдена Опа!!! А счас браузер вобще полез на: http://auto.search.msn.com/response.asp?MT=lightweb.org&srch=5&prov=&utf8
Читал Денвер и Windows XP
но у меня нет прокси, а по настройкам "Контролера доступа" у меня винда английская, а и в русской особенно не в курсе как опция называется... Нет на русском я бы наверное понял....... В свойствах браузера в "местная интрасеть"->узлы->дополнительно - прописал http://*.lightweb.org
Точнее я прописал lightweb.org винда сама поставила http://*.lightweb.org
Всё какбы правильно но не фурычит
|
|
| Вернуться к началу |
|
 |
Дмитрий Кóтеров
Администратор

Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405 поощрить/наказать
|
Добавлено: Пн Авг 22, 2005 7:11 pm (спустя 2 часа 8 минут; написано за 19 секунд)
Заголовок сообщения:
|
|
<VirtualHost lightweb.org> DocumentRoot "Z:/lightweb.org" ServerName lightweb - это неправильно. Смотрите в vhosts.conf, выдерите оттуда пример щаблона и сделайте так же.
|
|
| Вернуться к началу |
|
 |
amixen
Участник форума
Зарегистрирован: 04.07.2005
Сообщ.: 32
Карма: 0 поощрить/наказать
|
Добавлено: Пн Авг 22, 2005 8:16 pm (спустя 1 час 4 минуты; написано за 1 минуту 49 секунд)
Заголовок сообщения:
|
|
Дмитрий Кóтеров
Вот так пытался:
| Цитата: |
Host Z:/lightweb.org Listen 127.0.0.1:80 <VirtualHost *:*> DocumentRoot "Z:/lightweb.org" ServerName "lightweb.org" ServerAlias "asd.lightweb.org" "www.asd.lightweb.org" ScriptAlias /cgi/ "/home/localhost/cgi/" ScriptAlias /cgi-bin/ "/home/localhost/cgi-bin/" ErrorLog "Z:/lightweb.org/logs/error.log" </VirtualHost> |
и так тоже...
| Цитата: |
# Host /home/lightweb.it Listen 127.0.0.1:80 <VirtualHost lightweb.it:*> DocumentRoot "Z:/home/lightweb.it/www" ServerName "www.lightweb.it" ServerAlias "asd.lightweb.it" "www.asd.lightweb.it" ScriptAlias /cgi/ "/home/lightweb.it/cgi/" ScriptAlias /cgi-bin/ "/home/lightweb.it/cgi-bin/" ErrorLog "/home/lightweb.it/error.log" </VirtualHost> |
Ноль эмоций... lightweb.it - это я еще один создал в папке Z:/home/lightweb.it. Ну т.е. стандартно уже...
|
|
| Вернуться к началу |
|
 |
Дмитрий Кóтеров
Администратор

Зарегистрирован: 10.03.2003
Сообщ.: 13553
Карма: 405 поощрить/наказать
|
Добавлено: Пн Авг 22, 2005 8:59 pm (спустя 42 минуты; написано за 11 секунд)
Заголовок сообщения:
|
|
| Должно получиться. Пробуйте дальше, ищите ошибку.
|
|
| Вернуться к началу |
|
 |
Гость
Карма: 367 поощрить/наказать
|
Добавлено: Вт Авг 23, 2005 3:47 pm (спустя 18 часов 48 минут; написано за 5 минут 18 секунд)
Заголовок сообщения:
|
|
ну вот, разобрался... :) Значится так: и первый и второй вариант подходит!
| Цитата: |
Listen 127.0.0.1:80 <VirtualHost *:*> DocumentRoot "Z:/lightweb.org" ServerName "lightweb.org" ServerAlias "asd.lightweb.org" "www.asd.lightweb.org" # ScriptAlias /cgi/ "/home/localhost/cgi/" # ScriptAlias /cgi-bin/ "/home/localhost/cgi-bin/" ErrorLog "Z:/lightweb.org/logs/error.log" </VirtualHost> |
| Цитата: |
Listen 127.0.0.1:80 <VirtualHost *:*> DocumentRoot "Z:/home/lightweb.it/www/" ServerName "www.lightweb.it" ServerAlias "asd.lightweb.it" "www.asd.lightweb.it" ScriptAlias /cgi/ "/home/localhost/cgi/" ScriptAlias /cgi-bin/ "/home/localhost/cgi-bin/" ErrorLog "/home/lightweb.it/error.log" </VirtualHost> |
Оба варианта рабочие! Если в папке лежит index.html !!!! Всё корректно пашет в том числе и поддомены! Но в моём случае, нужно было юзать index.php. А вот в нём то и дело. Как только я писал в адресной строке http://lightweb.it ( а там лежит index.php) Сваливался апач...! Вот собсно и всё! Проблема была именно в index.php. Странно, только почему так радикально влияла ошибка , что апач сыпался... Ну ничего разберемся! Дмитрий Кóтеров и Maus, спасибо за сотрудничество!
|
|
| Вернуться к началу |
|
 |
amixen
Участник форума
Зарегистрирован: 04.07.2005
Сообщ.: 32
Карма: 0 поощрить/наказать
|
Добавлено: Вс Авг 28, 2005 1:11 pm (спустя 4 дня 21 час 23 минуты; написано за 57 секунд)
Заголовок сообщения:
|
|
Да, ошибку в скрипте ликвидировал. Всё заработало исправно! Вопрос решен, тему можно закрыть.
|
|
| Вернуться к началу |
|
 |
Евгений Галашин
Модератор

Зарегистрирован: 29.12.2003
Сообщ.: 1862
Карма: 30 поощрить/наказать
|
Добавлено: Вс Авг 28, 2005 1:55 pm (спустя 44 минуты)
Заголовок сообщения:
|
|
 М |
|
Тема закрыта. |
|
|
| Вернуться к началу |
|
 |
|