ウェブサイト設定 · 1 min read · Nov 26, 2025

Apache2: デバイスに基づいてユーザーをモバイルまたは通常のウェブサイトにリダイレクトする方法 (mod_rewriteを使用)

スマートフォンやタブレット(iPhone、iPad、Androidフォンやタブレット、BlackBerryなど)の急激な普及に伴い、ウェブサイトのモバイル版を作成することを検討しているかもしれません。このチュートリアルでは、訪問者がモバイルデバイスを使用している場合はウェブサイトのモバイル版を提供し、標準のデスクトップPCを使用している場合は通常版を提供するようにApacheを設定する方法を説明します。これはApacheのリライトモジュールを使用して実現できます。

1 前提条件

このチュートリアルでは、私の「通常の」ウェブサイトはhttp://www.example.comおよびhttp://example.comでアクセス可能であり、私のモバイルサイトはhttp://m.example.comと呼ばれています。これらのvhostsはすでに私のシステムに存在するため、設定方法については説明しません。

2 mod_rewriteの有効化

まず、Apacheモジュールmod_rewriteが有効になっていることを確認する必要があります。このモジュールを使用すると、httpdリダイレクト、Apacheリダイレクション、Apache URLリライトを行うことができます。Debian/Ubuntuでは、次のようにして有効にできます:

a2enmod rewrite

その後、Apacheを再起動します - Debian/Ubuntuの場合、コマンドは次のとおりです:

/etc/init.d/apache2 restart

3 .htaccessファイルでリライトルールを許可するためのApacheの設定

私の「通常の」ウェブサイトwww.example.com / example.comには、vhost設定ファイル/etc/apache2/sites-available/www.example.com.vhostとドキュメントルート/var/www/www.example.com/webがあります。

私のモバイルサイトm.example.comには、vhost設定ファイル/etc/apache2/sites-available/m.example.com.vhostとドキュメントルート/var/www/www.example.com/mobileがあります。

各サイトのリライトルールを.htaccessファイルに配置したいと思います(vhost設定ファイルに直接配置することも可能ですが)、Apache HTTPサーバーによって読み取られる必要があります。したがって、まずはvhost設定を変更して、両方の.htaccessファイルがリライトディレクティブを含むことができるようにします。これを行うには、AllowOverride Allという行を追加します(これにより、htaccessがvhost設定やサーバー設定のすべての設定を上書きできるようになります):

vi /etc/apache2/sites-available/www.example.com.vhost
[...]
        
                AllowOverride All
    
[...]
vi /etc/apache2/sites-available/m.example.com.vhost
[...]
        
                AllowOverride All
        
[...]

その後、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

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]

モバイルウェブサイトm.example.comの場合、モバイルデバイスを使用していないすべてのユーザーを「通常の」ウェブサイトwww.example.com / example.comにリダイレクトするリライトルールは次のようになります - 前の.htaccessファイルからRewriteCond条件を否定しました:

vi /var/www/www.example.com/mobile/.htaccess

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]

これで、リダイレクトディレクティブが設定されました!テストを行うことができます。たとえば、標準のデスクトップブラウザでm.example.comにアクセスします:

すべてがうまくいけば、www.example.comにリダイレクトされるはずです:

次に、モバイルデバイス(ここではAndroidフォンを使用)でwww.example.comにアクセスしてみてください:

m.example.comにリダイレクトされるはずです:

5 リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。