Мобильная
версия

Редирект на поддомены с помощью .htaccess

Дата: Категория: Разное

Как вы могли заметить - в блоге появилась полноценная мобильная версия.

http://m.phpbl.ru/

Она легкая, простая, но от этого не менее информативная.
А самое главное - она находится на поддомене.

поддомен мобильной версии m.phpbl.ru

О том как сделать простой редирект на поддомены с помощью .htaccess и пойдет речь.

В начале немного о структуре сайта.
Мобильная версия находилась в папке ROOT_DIR/m/ , и, соответственно, была доступна (да и сейчас доступна) по адресу https://phpbl.ru/m/
Так как обычная версия сайта и правда немного тяжеловата (взять хотя бы фиксированную правую колонку или облако тэгов), я решил всех пользователей мобильных устройств сразу перенаправлять на мобильную версию, и там уже давать им выбор - переходить к полной или нет.

И еще я хотел чтобы это было красиво. Согласитесь, https://phpbl.ru/m/ - такая ссылка не очень радует глаз. И поэтому я решил сделать на отдельном поддомене - http://m.phpbl.ru/

Вначале нужно было разобраться с зоной DNS в домене. Но так как там у меня стоял редирект всех поддоменов на основной домен, то с этим проблем не возникло. даже не пришлось ничего менять

Редирект всех поддоменов на основной домен

Отлично, теперь приступим к настройке .htaccess

RewriteEngine on
RewriteCond %{HTTP_HOST} ^m\.phpbl\.ru$
RewriteCond %{REQUEST_URI} !/m/
RewriteRule ^(.*)$ /m/$1 [L]
В целом все ясно, но давайте разберем подробнее все 3 строки
  1. RewriteEngine - Включает возможность работать с mod_rewrite
  2. RewriteCond - условие. Если HTTP_HOST соответсвует регулярному выражению (в моем случае мобильный URL) то переходим к следующему условию
  3. Условие выполняется только если REQUEST_URI (все что после домена в url) не совпадает с нашей папкой. Согласитесь что m.phpbl.ru/m/ - не слишком хорошо.
  4. А это уже переадресация, если выполнены оба предыдущих условия, в папку m

После этого, в папке m нужно создать .htaccess (если его там еще нет) и вписать в него следующий код

RewriteEngine on

Как видите - все достаточно просто и лаконично. Теперь проверяем.
При переходе по ссылку m.phpbl.ru ссылка меняется на phpbl.ru/m/

Что то пошло не так!

ну да. Сервер просто не может понять что же именно от него хотят. Он знает только домен phpbl.ru, а поддомен m.phpbl.ru для него в новинку.
Надо это исправлять.

nginx

Пожалуй самый просто вариант - в директиву нам просто нужно дописать все необходимые домены

server {
    listen 80;
    server_name phpbl.ru m.phpbl.ru;
....

apache

У apache есть директива ServerAlias.
Если ее нету, то вставьте ее после ServerName

<VirtualHost *:80>
        ServerName phpbl.ru
        ServerAlias m.phpbl.ru
....

Хостинги

В хостингах, если конечно он не какой нибудь самый дешевый или бесплатный, есть возможность создать Алиасы (поддомены, субдомены - названий может быть много).
В него то и нужно вписать свой поддомен

Создание алиаса.

Все. Как видите, получилось не так и сложно.

Теги: # Оптимизация, #.htaccess

Ваша оценка:

Рейтинг: 9.5 (Оценок: 5)

Комментарии (4):

shynybek
2016-09-11 19:03
Здравствуйте
Могут ли в поисковике забанить если редирект будет идти на поддомен который закрыт от индексаций в поисковиках?
DOC_tr
2016-09-12 14:05
@shynybek:Добрый день. Тут уже нюансы SEO - я не в силах помочь с данным вопросом.
Дмитрий
2015-11-09 15:08
Здравствуйте.
Подскажите пожалуйста,
RewriteCond %{HTTP_HOST} ^(.+?)\.site.ru$ [NC]
RewriteRule ^$ index.php?tag=%1 [L,QSA]

это работает только для главной поддомена  
по адресу http://moskva.site.ru/ открывается содержимое http://site.ru/index.php?tag=moskva

тут все нормально.

А как сделать для категорий поддомена, во так чтобы было :
по адресу http://moskva.site.ru/category/rabota/ нужно показывать содержимое http://site.ru/index.php?tag=moskva&cat=rabota
DOC_tr
2015-11-10 14:43
@Дмитрий:Примерно вот так

RewriteEngine on
# условие - если хост moskva.site.ru
RewriteCond %{HTTP_HOST} ^moskva.site.ru$
# редирект того что идет после хоста
RewriteRule ^category/rabota/$ /index.php?tag=moskva&cat=rabota [L]
# то что идет после /category/ передается с помощью переменной $_GET['cat']
RewriteRule ^category/(.*?)/$ /index.php?tag=moskva&cat=$1 [L]

Комментарий:

Copyright © DOC_tr 2015-2017 г. Все права защищены
Яндекс.Метрика
Перейти к мобильной версии