2010-05-07 13 views
6

फिर भी एक और nginx पुनर्लेखन नियम सवाल को फिर से लिखने:nginx उपडोमेन

मैं http://*.domain.com करने के लिए http://www.*.domain.com से एक पुनर्लेखन कैसे कर सकता है? सर्वर गलती से

+0

इसी प्रकार के प्रश्न: http://stackoverflow.com/questions/2498712/nginx-subdomain-rewrite –

उत्तर

7
if ($host ~* www\.(.*)) { 
    set $host_without_www $1; 
    rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo' 
} 

उत्तर: https://serverfault.com/questions/139579/nginx-subdomain-rewrite

+5

यह दृष्टिकोण आजकल अनुशंसित नहीं है। [सामान्य नुकसान पर यह अनुभाग देखें] (http://wiki.nginx.org/Pitfalls#Using_If)। –

+0

अनुशंसित दृष्टिकोण क्या है? – Tony

2
server { 
    listen 80; 
    listen 443; 
    server_name ~^www\.(\w+)\.domain\.com$; 
    location/{ 
    rewrite^$scheme://$1.domain.com$request_uri? permanent; 
    } 
} 
+0

ध्यान दें कि यह एक डबल क्वेरी स्ट्रिंग उत्पन्न करता है, '/? Foo = bar' के लिए अनुरोध' /? Foo = bar? Foo = bar' पर रीडायरेक्ट करेगा। '$ Uri' का उपयोग करना इरादा के रूप में काम करता है, हालांकि बेहतर विकल्प हो सकते हैं। – sapht

+1

जोड़ रहे हैं? $ request_uri के बाद बार-बार क्वेरी स्ट्रिंग समस्या से बचेंगी। – tarkeshwar

+0

server_name के बाद एक गायब अर्धविराम है – alvin