2010-03-23 29 views
8

ben den yeniden yazmak için nginx yeniden yazma kuralı gerekir.nginx alt alan yeniden yazma

Lütfen bu problemi çözmemde yardımcı olabilir misiniz, bu iki kuralı nasıl yazabilirim? Mümkünse sadece

server { 
    server_name example.com ~^(.*)\.example\.com$ ; 

    rewrite^/keyword.php?keyword=$1 break; 

# location /keyword.php { 
# .... 
# } 
} 
+0

Yeniden yazmayı (sunucu tarafında olduğu gibi, proxy yeniden yazma) söylüyorsunuz, ancak yönlendirmeyi kastediyormuş gibi geliyor? Bir yönlendirmede, kullanıcının görebileceği URL değişir. Bir proxy rewrite'de, sunucu tarafında, kullanıcı tarafından görünmez olur. – conny

+0

Yeniden yazmak demek istedim, kullanıcıların görmesi gerekenler http://keyword.example.com Conny – ivan73

cevap

7

sonra, yönlendirme demekse host) normal olan domain.com/www.domain.com ve sonra geri kalanları yeniden yazmak için conf kullanın

Lütfen bir şey özlediğimi söylerseniz lütfen bana bildirin.
+1

Soru yeniden yazmalarla ilgili olsa bile, örneğiniz olması gerektiği gibi "www" kelimesini hariç tutmaz. Bunun için bir negatif lookahead yapısı eklemeniz gerekir: '^ ((?! www \.). *) \. Example \ .com $' – conny

+0

Nginx sunucu arama sırası olduğundan tam adlar (www.ornek.com) normal ifadelerden önce gider. –

+0

Benzer bir sorunum var, ancak bu çözüm ana bilgisayarı yeniden yazma gibi görünmüyor. OP'de, kurallar tamamlandığında sunucunun www.example.com/keyword.php?keyword=$1 işlemesini istediğini, ancak bunun yalnızca yol ve sorguyu yeniden yazdığını belirtti. Ana bilgisayarı dahili olarak yeniden yazmanın bir yolu var mı? Sadece yönlendirmeleri kullanarak örnekler gördüm ve tüm deneylerim başarısız oldu. Teşekkürler. –

2
rewrite ^/list-c-([0-9]+)-k-(.+)-o-1\.html$ /index.php?module=Default&action=List&c=$1&k=$2&o=1 last; 
rewrite ^/list-c-([0-9]+)-k-(.+)-o-1-p-(.+)\.html$ /index.php?module=Default&action=List&c=$1&k=$2&o=1&p=$3 last; 
rewrite ^/list-c-([0-9]+)-k-(.+)-o-1-price-(.+)\.html$ /index.php?module=Default&action=List&c=$1&k=$2&o=1&price=$3 last; 
rewrite ^/list-c-([0-9]+)-k-(.+)-o-(.+)-p-1\.html$ /index.php?module=Default&action=List&c=$1&k=$2&o=$3&p=1 last; 
rewrite ^/list-c-([0-9]+)-k-(.+)-o-(.+)-p-(.+)\.html$ /index.php?module=Default&action=List&c=$1&k=$2&o=$3&p=$4 last; 
0

yapmak sadece (sanal 1 sunucu oluşturmak istiyorum

server { 
    server_name ~^(.*)\.example\.com$ ; 

    rewrite^http://www.example.com/keyword.php?keyword=$1 redirect; 
} 

sonra yeniden yazma durumunda: