Apache 2 перенаправляет и перезаписывает на основе используемого устройства
На этой странице
- 1 Предварительное примечание
- 2 Включение mod_rewrite
- 3 Настройка Apache для разрешения правил перезаписи в файлах .htaccess
- 4 Создание правил перезаписи
- 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.