SORU
30 EKİM 2011, Pazar


No-www için Nginx ve no-www www

** 21, net aradı ve şimdiye kadar bu işi alamıyorum aşağıdaki Rackspace cloud üzerinde nginx kullanıyorum.

Www.mysite.com normal mysite.com gitmek istiyorum .seo ve diğer nedenlerden dolayı debug.

Benimvi /etc/nginx/sites-available/www.örnek.com.pkod:

server {
       listen 80;
       server_name www.example.com example.com;
       root /var/www/www.example.com/web;

       if ($http_host != "www.example.com") {
                 rewrite ^ http://example.com$request_uri permanent;
       }

Ayrıca denedim

server {
       listen 80;
       server_name example.com;
       root /var/www/www.example.com/web;

       if ($http_host != "www.example.com") {
                 rewrite ^ http://example.com$request_uri permanent;
       }

Ben de denedim. İkinci deneme de yönlendirme döngüsü hatası veriyor.

if ($host = 'www.example.com' ) {
rewrite ^ http://example.com$uri permanent;
}

Benim DNS ayarı olarak standart:

site.com 192.192.6.8 A type at 300 seconds
www.site.com 192.192.6.8 A type at 300 seconds

(IPs ve klasörleri örnekler için ve gelecekte insanlara yardım etmek için kullanılmıştır örnek). Ubuntu 11 kullanıyorum.

CEVAP
31 EKİM 2011, PAZARTESİ


HTTP Çözüm

documentation, "doğru yolu example.org için ayrı bir sunucu tanımlamak için":

server {
    listen       80;
    server_name  example.com;
    return       301 http://www.example.com$request_uri;
}

server {
    listen       80;
    server_name  www.example.com;
    ...
}

HTTPS Çözüm

Çözüm 14 *...* dahil olmak üzere isteyenler için

server {
        listen 80;
        server_name www.domain.com;
        # $scheme will get the http protocol
        # and 301 is best practice for tablet, phone, desktop and seo
        return 301 $scheme://domain.com$request_uri;
}

server {
        listen 80;
        server_name domain.com;
        # here goes the rest of your config file
        # example 
        location / {

            rewrite ^/cp/login?$ /cp/login.php last;
            # etc etc...

        }
}

Not: ben aslında dahil https:// benim çözüm beri kullanıyoruz loadbalancers ve bizim https:// sunucu yüksek trafik SSL ödeme sunucu: biz karışımı https:// ve http://.


Nginx sürümünü kontrol etmek için, nginx -v kullanın.

Nginx yönlendirme ile url Strip-www

server {
    server_name  www.domain.com;
    rewrite ^(.*) http://domain.com$1 permanent;
}

server {
    server_name  domain.com;
    #The rest of your configuration goes here#
}

İKİ sunucu kodları olması gerekir.

Nginx yönlendirme ile url www ekleyin

Eğer ihtiyacın olan şey tam tersi ise, www.domain.com sana domain.com yönlendirmek bu kullanabilirsiniz:

server {
    server_name  domain.com;
    rewrite ^(.*) http://www.domain.com$1 permanent;
}

server {
    server_name  www.domain.com;
    #The rest of your configuration goes here#
}

Tahmin edebileceğiniz gibi, bu tam tersi. ve aynı şekilde ilk örnek çalışır. Bu şekilde, tam olarak SEO işaretleri aşağı, perma Yönlendirme ve hareket edemezsin. Hayır WWW zorlanır ve dizin gösterilen!

Benim kod aşağıda bazılarını daha iyi bir görünüm için gösterilen:

server {
    server_name  www.google.com;
    rewrite ^(.*) http://google.com$1 permanent;
}
server {
       listen 80;
       server_name google.com;
       index index.php index.html;
       ####
       # now pull the site from one directory #
       root /var/www/www.google.com/web;
       # done #
       location = /favicon.ico {
                log_not_found off;
                access_log off;
       }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CommonArtisan

    CommonArtisa

    7 Temmuz 2012
  • esnathesinger

    esnathesinge

    6 NİSAN 2009
  • HTC Tutorials

    HTC Tutorial

    21 EYLÜL 2010