2012-12-27 25 views
6

Ziyaretçileri, hangi tarayıcıyı kullandıklarıma göre sayfamıza yeniden yönlendirmek istiyorum..htaccess Tarayıcıya bağlı olarak belirli bir web sayfasına yönlendirin

Örneğin: Tüm ziyaretçiler ilk kez http://www.example.com/xy/abc.html adresini ziyaret edecektir. ziyaretçi firefox kullanıyorsa krom kullanıyor ziyaretçi, o http://www.example.com/xy/chrome.html

Operayla için hallet istiyorum

kanalize edilmesi gerektiği takdirde

, o http://www.example.com/xy/firefox.html

kanalize edilmesi gerektiği, krom, firefox, IE, safari tarayıcı ve tanımlanmamış tarayıcı için varsayılan yönlendirme ile.

Kod ile ilgili yardımlarınız var mı? Bakmaya çalıştım ve tek bulduğum, tüm tarayıcılar için tek bir yönlendirme kodu yerine tek bir yönlendirme kodu.

Yardımınız için teşekkür ederiz. Teşekkürler.

cevap

11

Kullanıcı aracısının rapor edilen adına karşı test etmek için mod_rewrite RewriteCond directive'u kullanabilirsiniz. senin xy dizinine yerleştirilen bir .htaccess dosyasında bu benzeyecektin: Bu kalıcı opera.html için kendi kullanıcı aracısı dizesi yere Opera sahip tarayıcıları yönlendirir

RewriteCond %{HTTP_USER_AGENT} Opera 
RewriteRule ^abc.html$ http://example.com/xy/opera.html [R=301] 

. Kullanıcı aracılarının kendilerini useragentstring.com'da nasıl tanımladıklarına dair iyi bir liste bulabilirsiniz. Birçok kullanıcı aracısı dizesinin aslında "Mozilla" ile başladığını (bazı kötü tarihsel nedenlerden dolayı), ancak dizenin tarayıcı adını (IE "MSIE") içerip içermediğini görmek için sınamanız gerektiğini göreceksiniz.

Sorun, tarayıcı tarafından bildirilen HTTP_USER_AGENT dizesidir ve tarayıcı istediği her şeyi bildirebilir. Opera'nın, kendisini IE veya FF olarak maskelemesi için yerleşik bir seçeneği vardır. Genel olarak, kullanıcı aracısı dizgisine dayalı tarayıcı koklamasının sonunda özleneceği ve kullanıcının rahatsız olacağı konusunda iyi bir şans vardır. Otomatik yönlendirme işlemini geçersiz kılmak için kullanıcıyı bir şekilde bırakmanızı şiddetle tavsiye ederim.

RewriteEngine on 

RewriteCond %{HTTP_USER_AGENT} Opera 
RewriteRule ^abcd.html$ opera.html [NC,L] 

RewriteCond %{HTTP_USER_AGENT} MSIE 
RewriteRule ^abcd.html$ ie.html [NC,L] 

RewriteCond %{HTTP_USER_AGENT} Chrome 
RewriteRule ^abcd.html$ chrome.html [NC,L] 

RewriteCond %{HTTP_USER_AGENT} Safari 
RewriteRule ^abcd.html$ safari.html [NC,L] 

RewriteCond %{HTTP_USER_AGENT} Firefox 
RewriteRule ^abcd.html$ firefox.html [NC,L] 

RewriteRule ^abcd.html$ default.html [L] 

L bayrak Bir tarayıcı kendisini bildiriyorsa böylece kural mı geçişte yürütülecek Son olduğundan emin olur:


Yani, böyle bir şey ilk yaklaşım olarak işe yarayabilecek Firefox, Safari, MSIE ve Opera içeren bir dizgi ile eşleşen ilk kural (bu durumda Opera) açılış sayfasını belirleyecektir. Bu sürüm, yumuşak bir yönlendirme gerçekleştirir (tarayıcının adres çubuğu değişmez). Zor, R = 301 yönlendirmesini istiyorsanız, açılış sayfasının URL'sinin tamamını yazdığınızdan emin olun, diğer bir deyişle, RewriteRule ^abcd.html$ http://example.com/xy/opera.html [NC,L,R=301]

+0

Teşekkürler. Bazı kullanıcılar için başarısız olup olmadığı konusunda pek endişe duymuyorum. % 100'lük bir çalışma çözümü beklemiyor ama% 85'e yakın bir şey iyi olmalı. – vinny

+0

Sadece açıklığa kavuşturmak için bu kodu bir araya getirdim, bu size iyi geliyor mu?
RewriteCond %{HTTP_USER_AGENT} Opera RewriteRule ^abc.html$ opera.html [R=301] RewriteCond %{HTTP_USER_AGENT} Mozilla RewriteRule ^abc.html$ ff.html [R=301]
Krom bir başka sorun da, Mozilla'yı kullandı; bu, yönlendirme işleminin krom kullanıcıları için doğru olmayacağı anlamına geliyor. – vinny

+0

Örnek bir uygulama eklendi. Benim makinem üzerinde çalışmak görünüyor, ancak bunu test ettiğinizden emin olun :). –

İlgili konular