Поиск по сайту:

Apache 2 перенаправляет и перезаписывает на основе используемого устройства


На этой странице

  1. 1 Предварительное примечание
  2. 2 Включение mod_rewrite
  3.  3 Настройка Apache для разрешения правил перезаписи в файлах .htaccess
  4.  4 Создание правил перезаписи
  5. 5 ссылок

С момента массового распространения смартфонов и планшетов, таких как iPhone, iPad, телефоны и планшеты Android, BlackBerry и т. д., вы, возможно, задумались о создании мобильной версии своего веб-сайта. В этом руководстве объясняется, как настроить Apache для обслуживания мобильной версии вашего веб-сайта, если посетитель использует мобильное устройство, и обычной версии, если посетитель использует стандартный настольный ПК. Этого можно достичь с помощью модуля перезаписи Apache.

1 Предварительное примечание

В этом руководстве мой «обычный» веб-сайт доступен по адресам http://www.example.com и http://example.com, а мой мобильный сайт называется http://m.example.com. Эти виртуальные хосты уже существуют в моей системе, поэтому я не буду рассказывать, как их настроить.

2 Включение mod_rewrite

Во-первых, вы должны убедиться, что модуль Apache mod_rewrite включен. Этот модуль позволяет выполнять перенаправление httpd, перенаправление apache и перезапись URL-адреса apache через веб-сервер apache. В Debian/Ubuntu вы можете включить его следующим образом:

a2enmod rewrite

После этого перезапустите Apache — для Debian/Ubuntu команда выглядит так:

/etc/init.d/apache2 restart

3 Настройка Apache для разрешения правил перезаписи в файлах .htaccess

Мой «обычный» веб-сайт www.example.com/example.com имеет файл конфигурации виртуального хоста /etc/apache2/sites-available/www.example.com.vhost и корень документа /var/www/www.example. .com/веб.

Мой мобильный сайт m.example.com имеет файл конфигурации виртуального хоста /etc/apache2/sites-available/m.example.com.vhost и корень документа /var/www/www.example.com/mobile.

Я хочу разместить правила перезаписи для каждого сайта в файле .htaccess (хотя их также можно разместить непосредственно в файле конфигурации vhost) с возможностью чтения http-сервером apache. Поэтому я должен сначала изменить наши конфигурации виртуального хоста, чтобы оба файла .htaccess могли содержать директивы перезаписи. Мы можем сделать это с помощью строки AllowOverride All (которая позволяет .htaccess переопределить все настройки в конфигурации vhost, конфигурации сервера):

vi /etc/apache2/sites-available/www.example.com.vhost
[...]
        <Directory /var/www/www.example.com/web/>
                AllowOverride All
	</Directory>
[...]
vi /etc/apache2/sites-available/m.example.com.vhost
[...]
        <Directory /var/www/www.example.com/mobile/>
                AllowOverride All
        </Directory>
[...]

После этого перезапустите Apache:

/etc/init.d/apache2 restart

4 Создание правил перезаписи

Теперь давайте создадим правила перезаписи для «обычного» веб-сайта www.example.com/example.com, которые будут перенаправлять всех пользователей мобильных устройств на мобильную версию m.example.com — я сосредоточусь на соответствующих устройствах/пользовательских агентах. здесь: Android, Blackberry, Googlebot-mobile (мобильный поисковый бот Google), IE Mobile, iPad, iPhone, iPod, Opera Mobile, PalmOS и WebOS.

Файл /var/www/www.example.com/web/.htaccess выглядит следующим образом:

vi /var/www/www.example.com/web/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC]
RewriteRule ^$ http://m.example.com/ [L,R=302]
</IfModule>

Для нашего мобильного веб-сайта m.example.com правила перезаписи, которые перенаправляют всех пользователей, не использующих мобильное устройство, на наш «обычный» веб-сайт www.example.com/example.com, выглядят следующим образом: я отменил RewriteCond условие из предыдущего файла .htaccess:

vi /var/www/www.example.com/mobile/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "!(android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos)" [NC]
RewriteRule ^$ http://www.example.com/ [L,R=302]
</IfModule>

Вот и все, мы настроили нашу директиву перенаправления! Теперь вы можете провести некоторое тестирование, например. посетите m.example.com в стандартном настольном браузере:

Если все пойдет хорошо, вы должны быть перенаправлены на www.example.com:

Теперь протестируйте с мобильным устройством (здесь я использую телефон Android) и перейдите на www.example.com:

Вы должны быть перенаправлены на m.example.com:

5 ссылок

  • Apache: http://httpd.apache.org/
  • Модуль Apache mod_rewrite: http://httpd.apache.org/docs/current/mod/mod_rewrite.html.