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]
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
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
Örnek bir uygulama eklendi. Benim makinem üzerinde çalışmak görünüyor, ancak bunu test ettiğinizden emin olun :). –