Yanıtlar:
Ayrıca Nginx wiki ve diğer bloglarda da baktım ve performans açısından en iyi yol aşağıdakileri yapmaktır:
Nginx (yazma sırasında sürüm 1.0.12) kullanarak www.example.com'dan example.com'a yönlendirmek için.
server {
server_name www.example.com;
rewrite ^ $scheme://example.com$request_uri permanent;
# permanent sends a 301 redirect whereas redirect sends a 302 temporary redirect
# $scheme uses http or https accordingly
}
server {
server_name example.com;
# the rest of your config goes here
}
Example.com sitesine istekler geldiğinde, performans için if ifadeleri kullanılmaz. Ve yeniden yazmayı vergilendiren bir $ 1 eşleşmesi oluşturmak yerine $ request_uri kullanır (bkz. Nginx Ortak Tuzaklar sayfası).
Kaynaklar:
Biraz kazma ve bazı yanlış adımlardan sonra, çözüm burada. Karşılaştığım şey " http://example.com $ uri" kullandığınızdan emin olmaktır . $ Uri'nin önüne / önüne eklemek http://example.com// adresine yönlendirilir.
server {
listen 80;
server_name www.example.com;
rewrite ^ http://example.com$uri permanent;
}
# the server directive is nginx's virtual host directive.
server {
# port to listen on. Can also be set to an IP:PORT
listen 80;
# Set the charset
charset utf-8;
# Set the max size for file uploads to 10Mb
client_max_body_size 10M;
# sets the domain[s] that this vhost server requests for
server_name example.com;
# doc root
root /var/www/example.com;
# vhost specific access log
access_log /var/log/nginx_access.log main;
# set vary to off to avoid duplicate headers
gzip off;
gzip_vary off;
# Set image format types to expire in a very long time
location ~* ^.+\.(jpg|jpeg|gif|png|ico)$ {
access_log off;
expires max;
}
# Set css and js to expire in a very long time
location ~* ^.+\.(css|js)$ {
access_log off;
expires max;
}
# Catchall for everything else
location / {
root /var/www/example.com;
access_log off;
index index.html;
expires 1d;
if (-f $request_filename) {
break;
}
}
}
Lütfen bu soruyu SO dilinde ziyaret edin: https://stackoverflow.com/a/11733363/846634
Daha iyi cevaptan:
Aslında yeniden yazmaya bile ihtiyacınız yok.
server {
#listen 80 is default
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
server {
#listen 80 is default
server_name example.com;
## here goes the rest of your conf...
}
Cevabım, yukarıdakilere göre daha fazla oy alıyor. rewrite
Bu bağlamda asla bir kullanmamalısınız . Neden? Çünkü nginx bir işlemi işlemeli ve başlatmalıdır. Eğer kullanırsanız return
doğrudan yürütme durur (herhangi bir nginx sürümünde olmalıdır). Bu, herhangi bir bağlamda tercih edilir.
Www olmayan öğeye yönlendirmek için, vhost dosyasını değiştirin:
server {
listen 80;
server_name www.example.com;
rewrite ^/(.*) http://example.com/$1 permanent;
}
'Kalıcı', yönlendirmeyi 301 yönlendirmesine dönüştürür. Bu kod bloğundan sonra etki alanını www olmadan yapılandırabilirsiniz.
Www olmayanları www'ye yönlendirmek için:
server {
listen 80;
server_name example.com;
rewrite ^/(.*) http://www.example.com/$1 permanent;
}
Thassit.
BTW, Nginx kullanarak tam VPS kurulumu için, guvnr.com sitemdeki VPS İncil'e göz atın ve umarım bu kullanışlı!
Ne kullanıyorum:
# ---------------------------------------
# vHost www.example.com
# ---------------------------------------
server {
##
# Redirect www.domain.tld
##
server_name www.example.com;
rewrite ^(.*) http://example.com$1 permanent;
}
# ---------------------------------------
# vHost example.com
# ---------------------------------------
server {
# Something Something
}
server {}
yapılandırma bloğundan sonra gelmelidir .