उपयोगकर्ता एजेंट के रिपोर्ट किए गए नाम के खिलाफ परीक्षण करने के लिए आप mod_rewrite के RewriteCond directive का उपयोग कर सकते हैं। एक .htaccess अपने xy निर्देशिका में रखा फ़ाइल में, यह इस तरह दिखना चाहते हैं:
RewriteCond %{HTTP_USER_AGENT} Opera
RewriteRule ^abc.html$ http://example.com/xy/opera.html [R=301]
यह स्थायी रूप से ब्राउज़र अपने उपयोगकर्ता एजेंट स्ट्रिंग opera.html करने में कहीं ओपेरा है कि रीडायरेक्ट करेगा। आप useragentstring.com पर उपयोगकर्ता एजेंटों को स्वयं कैसे पहचानते हैं, इसकी एक सभ्य सूची मिल सकती है। आप देखेंगे कि कई उपयोगकर्ता एजेंट तार वास्तव में "मोज़िला" (कुछ दुष्ट ऐतिहासिक कारणों से) के साथ शुरू होते हैं, लेकिन यह देखने के लिए परीक्षण करते हैं कि स्ट्रिंग में ब्राउज़र का नाम है (आईई "एमएसआईई") पर्याप्त होना चाहिए।
समस्या यह है कि HTTP_USER_AGENT
स्ट्रिंग ब्राउज़र द्वारा रिपोर्ट की जाती है, और ब्राउजर बहुत कुछ भी चाहते हैं जो वे चाहते हैं। ओपेरा में आईई या एफएफ के रूप में खुद को मास्कराइड करने के लिए एक अंतर्निहित विकल्प भी है। आम तौर पर, एक अच्छा मौका है कि उपयोगकर्ता एजेंट स्ट्रिंग के आधार पर ब्राउज़र-स्नीफिंग अंततः याद आती है, और फिर उपयोगकर्ता नाराज होगा। मैं दृढ़ता से सुझाव देता हूं कि आप स्वचालित पुनर्निर्देशन को ओवरराइड करने के लिए उपयोगकर्ता को कुछ रास्ता छोड़ दें।
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]
एल झंडा लगता है कि उस नियम, अंतिम कि पास में क्रियान्वित किया जा रहा है, इसलिए यदि एक ब्राउज़र ही रिपोर्ट करता है:
तो, कुछ इस तरह पहली बार एक दृष्टिकोण के रूप में काम कर सकते हैं फ़ायरफ़ॉक्स, सफारी, एमएसआईई और ओपेरा युक्त स्ट्रिंग के साथ, मिलान करने वाला पहला नियम (इस मामले में ओपेरा) लैंडिंग पृष्ठ निर्धारित करेगा। यह संस्करण एक सॉफ्ट रीडायरेक्ट करता है (ब्राउज़र का पता बार नहीं बदलेगा)। यदि आप एक कठिन, आर = 301 रीडायरेक्ट करना चाहते हैं, तो लैंडिंग पृष्ठ के पूरे यूआरएल को स्पेल करना सुनिश्चित करें, यानी RewriteRule ^abcd.html$ http://example.com/xy/opera.html [NC,L,R=301]
धन्यवाद। मैं वास्तव में बहुत चिंतित नहीं हूं कि यह कुछ उपयोगकर्ताओं के लिए विफल रहता है या नहीं। वास्तव में 100% कामकाजी समाधान की उम्मीद नहीं है लेकिन 85% के करीब कुछ भी ठीक होना चाहिए। – vinny
बस स्पष्ट करने के लिए, मैंने यह कोड एक साथ रखा है, क्या यह आपके लिए ठीक दिखता है?
RewriteCond %{HTTP_USER_AGENT} Opera RewriteRule ^abc.html$ opera.html [R=301] RewriteCond %{HTTP_USER_AGENT} Mozilla RewriteRule ^abc.html$ ff.html [R=301]
एक और मुद्दा, क्रोम ने मोज़िला का भी उपयोग किया, जिसका अर्थ है कि रीडायरेक्ट क्रोम उपयोगकर्ताओं के लिए सटीक नहीं होगा। – vinny
एक नमूना कार्यान्वयन जोड़ा गया। मेरी मशीन पर काम करने लगता है, लेकिन यह परीक्षण करने के लिए सुनिश्चित करें :)। –