Apache 2 ridrejton dhe rishkruan në bazë të pajisjes së përdorur


Që nga rritja masive e telefonave inteligjentë dhe tabletëve si iPhone, iPad, telefonat dhe tabletët Android, BlackBerry, etj., mund të keni menduar të krijoni një version celular të faqes tuaj të internetit. Ky udhëzues shpjegon se si të konfiguroni Apache për të shërbyer versionin celular të faqes tuaj të internetit nëse vizitori përdor një pajisje celulare dhe versionin e rregullt nëse vizitori përdor një kompjuter desktop standard. Kjo mund të arrihet me modulin e rishkrimit të Apaches.

1 Shënim paraprak

Në këtë tutorial, faqja ime e internetit \normale\ është e aksesueshme nën http://www.example.com dhe http://example.com, ndërsa faqja ime celulare quhet http://m.example.com. Këto vhost tashmë ekzistojnë në sistemin tim, kështu që nuk do të mbuloj se si t'i konfiguroj ato.

2 Aktivizimi i mod_rewrite

Së pari, duhet të siguroheni që mod_rewrite i modulit Apache është i aktivizuar. Ky modul ju lejon të bëni një ridrejtim httpd, ridrejtim të apache-së dhe URL-në e rishkrimit të apache-së nëpërmjet një serveri në internet apache. Në Debian/Ubuntu, mund ta aktivizoni si kjo:

a2enmod rewrite

Rinisni Apache më pas - për Debian/Ubuntu, komanda është:

/etc/init.d/apache2 restart

3 Konfigurimi i Apache për të lejuar rishkrimin e rregullave në skedarët .htaccess

Faqja ime e internetit \normale\ www.example.com/example.com ka skedarin e konfigurimit vhost /etc/apache2/sites-available/www.example.com.vhost dhe rrënjën e dokumentit /var/www/www.example .com/web.

Faqja ime celulare m.example.com ka skedarin e konfigurimit të vhost /etc/apache2/sites-available/m.example.com.vhost dhe rrënjën e dokumentit /var/www/www.example.com/mobile.

Unë dua të vendos rregullat e rishkrimit për çdo sajt në një skedar .htaccess (megjithëse është gjithashtu e mundur t'i vendosim ato drejtpërdrejt në skedarin e konfigurimit vhost) me serverin get read by apache http. Prandaj më duhet së pari të modifikoj konfigurimet tona vhost në mënyrë që të dy skedarët .htaccess të mund të përmbajnë direktiva të rishkrimit. Ne mund ta bëjmë këtë me linjën AllowOverride All (e cila lejon .htaccess të anashkalojë të gjitha cilësimet në konfigurimin vhost, konfigurimin e serverit):

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>
[...]

Rinisni Apache më pas:

/etc/init.d/apache2 restart

4 Krijimi i rregullave të rishkrimit

Tani le të krijojmë rregullat e rishkrimit për uebsajtin \normal\ www.example.com/example.com që do të ridrejtojë të gjithë përdoruesit e pajisjeve celulare në versionin celular m.example.com - Unë fokusohem në pajisjet/agjentët përkatës të përdoruesve këtu, të cilat janë Android, Blackberry, Googlebot-mobile (bot i kërkimit celular të Google), IE Mobile, iPad, iPhone, iPod, Opera Mobile, PalmOS dhe WebOS.

Skedari /var/www/www.example.com/web/.htaccess duket si më poshtë:

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>

Për faqen tonë të internetit celulare m.example.com, rregullat e rishkrimit që ridrejtojnë të gjithë përdoruesit që nuk përdorin një pajisje celulare në faqen tonë të internetit \normale\ www.example.com/example.com duken si më poshtë - Ive mohuar RewriteCond kusht nga skedari i mëparshëm .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>

Kjo është ajo, ne vendosëm direktivën tonë të ridrejtimit! Tani mund të bëni disa testime, p.sh. vizitoni m.example.com me një shfletues standard desktop:

Nëse gjithçka shkon mirë, duhet të ridrejtoheni në www.example.com:

Tani provoni me një pajisje celulare (Unë përdor një telefon Android këtu) dhe shkoni te www.example.com:

Ju duhet të ridrejtoheni te m.example.com:

5 Lidhje

  • Apache: http://httpd.apache.org/
  • Moduli i Apache mod_rewrite: http://httpd.apache.org/docs/current/mod/mod_rewrite.html