- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый день, помогите пожалуйста с созданием динамических поддоменов, т.е. мне надо чтобы города были на отдельных поддоменах, например: ufa.site.ru, chel.site.ru, tyumen.site.ru и т.д. но при этом поддомены как бы создавались динамически, без создания отдельных папок, т.е. через мод реврайт. У меня сейчас все это добро работает вот так:
Делаю что то на подобии такого:
и не работает, в панели хостинга в DNS добавил запись A *.site.ru может что то еще надо сделать? Или где я накосячил?
Заранее большое спасибо за ответы.
Деймос,
чтобы использовать в подстановках значения в скобках из шаблонов в RewriteCond, нужно писать %1 (и до %9), в отличии от значений из шаблонов в RewriteRule, которые обозначаются $0 (это весь шаблон) и $1 - $9 (это то что в скобках)
попробуйте так
RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.ru$
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
это оставляете как есть (редирект с адреса без www на адрес с www),
а дальше так
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([a-z-]+).site.ru
RewriteRule (.*) /city.php?city_link=%1 [L]
Т.е в элементе масива ГЕТ ["city_link"] в city.php Вы будете иметь поддомен, а если вам нужен и адрес запрошенной страницы на этом поддомене, то можете сделать так (чтоб в элементе ["url"] иметь адрес страницы)
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([a-z-]+).site.ru
RewriteRule (.*) /city.php?city_link=%1&url=$1 [L]
Это все конечно будет работать при нормальной настройке DNS, когда все поддомены будут переадресовываться на основной домен
Можете проверить это в логах сервера, если там есть кроме www.site.ru и site.ru и другие поддомены, то с настройкой DNS все в норме, нужно только настроить реврайты.
Убедитесь для начала, что апач на домен все сабдомены подключает. Т.е. *.domen.ru .
А то может у него прописано domen.ru www.domen.ru , и соответственно все сабдомены пролетают в дефолтный сайт.
в панели хостинга в DNS добавил запись A *.site.ru может что то еще надо сделать?
Да и всё. Никаких извращений в хтацессе не нужно.
Да! Перезапустить апач.
Всем большое спасибо за ответы, но все равно не работает, т.е. не как не реагирует на модреврайт, заходишь по адресу: ufa.site.ru, а там заглушка что мол "работа данного сайта временно приостановлена", т.е. как бы он видит что поддомен есть, только вот он не работает, я вроде читал что там что то еще надо делать с VirtualHost и ServerAlias, но не знаю где это делать, у меня шаредхостинг от netangels.ru
Сегодня дело сдвинулось с мертвого места, нашел в чем был косяк, в хостинге помимо прописки в ДНС надо было поставить алиас для сайта *.site.ru....
Сейчас в htaccess'е у меня так:
При переходе на ufa.site.ru функционал работает, а вот js и css не подгружаются... Из-за чего такое может быть? В шаблоне они прописаны так:
Если в RewriteRule пишу /city.php?city_link=%1 [L] то не работает, пишет 500 ошибку (Internal Server Error)
При переходе на ufa.site.ru функционал работает, а вот js и css не подгружаются...
они в тексте страницы прописаны с относительными путями, и получается что запрашивается что-то типа
ufa.site.ru/css/style.css
ufa.site.ru/js/funcs.js и т.д.
и в конечном итоге Вы наверно получаете (как результат добавленного реврайта)
city.php?city_link=css/style.css
но не обрабатываете в city.php подобные запросы
Попробуйте исключить из обработки этим реврайтом файлы стилей и скрипты
RewriteCond %{HTTP_HOST} !^www.
RewriteCond %{HTTP_HOST} ^([a-z-]+).site.ru
RewriteCond $1 !\.(css|js)$
RewriteRule (.*) city.php?city_link=%1 [L]
можно добавить еще для исключения другие расширения для файлов с основного домена css|js|jpg|swf и так далее
А если реврайт c поддомена делается только для конкретных расширений, например htm или php, то проще описать не исключения, а эти расширения,
изменив 3 строку так
RewriteCond $1 \.php$
или так
RewriteCond $1 \.(htm|php)$
gormarket, спасибо за ответ и за то что все так подробно рассказываете.
Сделал так:
Все работает, но пришлось еще дописать jpg, png, gif и т.д., это правда не очень правильный вариант получается, т.к. мне реально нужно только с php работать. По этому воспользовался вторым вариантом
Но почему то после этого перестает работать функционал, т.е. css и js все норм, а вот вместо того чтобы вывести страницу города он выводит 404 (в хтацесе у меня ErrorDocument 404 /404.php) и он редиректит на 404.php. Не пойму почему так происходит(
Деймос,
при использовании
RewriteCond $1 \.php$
у Вас кажется происходит повторное применение правила,
попробуйте добавить еще исключение для страницы city.php,
т.е. сделать так
RewriteCond %{HTTP_HOST} !^www.
RewriteCond %{HTTP_HOST} ^([a-z-]+).site.ru
RewriteCond $1 !^city\.php$
RewriteCond $1 \.php$
RewriteRule (.*) city.php?city_link=%1 [L]
gormarket, не помогло( Та же ситуация(
Все файлы которые подгружаются только php...
использование сложных реврайтов это обычно танец с бубном :)
Нет возможности проводить эксперименты с поддоменами,
тестировал на модели подобного реврайта, и обнаружил что при наличии
предпоследней строки типа
RewriteCond $1 \.php$
значение %1 записывается пустым (значением city_link получается пустая строка),
но если поднять эту строку чуть выше, то все ОК
(только не спрашиваете меня почему !)
Пробуйте такой вариант, может сработать
RewriteCond %{HTTP_HOST} !^www.
RewriteCond $1 \.php$
RewriteCond %{HTTP_HOST} ^([a-z-]+).site.ru
RewriteRule (.*) city.php?city_link=%1 [L]