Nginx का उपयोग करके विशिष्ट उपयोगकर्ता एजेंटों के लिए अलग-अलग फ़ाइलों की सेवा करें


7

Nginx का उपयोग करते हुए, आप विभिन्न उपयोगकर्ता एजेंटों के लिए विभिन्न स्थिर फ़ाइलों की सेवा कैसे करते हैं? उदाहरण के लिए, यदि वर्तमान उपयोगकर्ता iPhone का उपयोग कर रहा है, तो उन्हें सेवा दी जानी चाहिए mobile_index.html, जबकि अन्य सभी उपयोगकर्ता एजेंटों को सेवा दी जानी चाहिए browser_index.html

मिला समाधान:

server {
  listen 80;
  root /var/www;

  set $mobile_request '0';
  if ($http_user_agent ~ 'iPhone') {
    set $mobile_request '1';
  }

  location =/ {
    if ($mobile_request = '1') {
      rewrite ^ /mobile_index.html;
    }
    if ($mobile_request = '0') {
      rewrite ^ /browser_index.html;
    }
  }
}

मोबाइल उपयोगकर्ताओं को मोबाइल साइट पर पुनर्निर्देशित क्यों नहीं करते? m.mysite.com की तरह ???
मार्सेलो बिट्टनकोर्ट

क्योंकि वह वह नहीं है जो मैं करना चाहता हूं?
सारांश 10

जवाबों:


9

यदि आपके पास nginx का नया पर्याप्त संस्करण है (0.9.6+), तो आप इसे एक मानचित्र के साथ पूरा कर सकते हैं :

map $http_user_agent $myindex {
  default /browser_index.html;
  ~iPhone /mobile_index.html;
}

server {
  listen 80;
  root /var/www;

  location = / { rewrite ^ $myindex; }
}

यदि आपको एक आंतरिक पुनर्निर्देशन की आवश्यकता नहीं है (जो कि आप शायद नहीं कर रहे हैं यदि आप केवल अनुक्रमणिका के लिए स्थिर फ़ाइलों की सेवा कर रहे हैं), तो आप पुनर्लेखन के लिए 'ब्रेक' ध्वज जोड़ सकते हैं और आंतरिक पुनर्निर्देशन से बच सकते हैं।

संपादित करें: यदि आप पुराने संस्करण का उपयोग कर रहे हैं, तो आप कुछ ऐसा कर सकते हैं:

server {
  listen 80;
  root /var/www;

  location = / {
    set $myindex /browser_index.html;
    if ($http_user_agent ~ iPhone) {
      set $myindex /mobile_index.html;
    }
    rewrite ^ $myindex;
  }
}

अगर आपको आंतरिक रीडायरेक्ट की आवश्यकता नहीं है तो फिर से, ब्रेक फ्लैग का उपयोग करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.