Nginx: Reescrever do domínio base para um subdiretório

Nginx: Reescrever do domínio base para um subdiretório

Tenho um blog hospedado emhttp://site.com/blog.

Como instruo o nginx a reescrever solicitações de site.compara site.com/blog?

Isto não deve ser permanente.

Responder1

location = / {
    rewrite ^ http://site.com/blog/ redirect;
}

Isso fará apenas solicitações especificamente para o root. Se você precisar capturar tudo (redirecionar http://site.com/somearticle/something.htmlpara http://site.com/blog/somearticle/something.html), precisará de algo mais complexo:

location /blog/ {
    # Empty; this is just here to avoid redirecting for this location,
    # though you might already have some config in a block like this.
}
location / {
    rewrite ^/(.*)$ http://site.com/blog/$1 redirect;
}

Responder2

tente isto em vez disso:

location = / {
      return 301 /blog/;
 }

A chave aqui é'='símbolo.

Responder3

Isso não funcionou para mim. Isto é o que funcionou:

  1. Abra o arquivo de configuração NGINX do seu site. Dentro do bloco do servidor, adicione o caminho para o diretório raiz e defina a ordem de prioridade dos arquivos:

    root /mnt/www/www.domainname.com;
    index  index.php index.html index.htm;
    
  2. Crie um bloco de localização vazioantestodos os seus outros blocos de localização:

    location /latest {
    # Nothing in here; this is to avoid redirecting for this location
    }
    
  3. Comente a diretiva do diretório raiz em seu bloco location / {} e adicione o redirecionamento para que fique assim:

    location / {
    # root   /mnt/www/www.domainname.com;
    index  index.php index.html index.htm;
    rewrite ^/(.*)$ http://www.domainname.com/latest/$1 redirect;
    }
    
  4. Certifique-se de que seu bloco ~ .php$ de localização aponte sua raiz para

    root /mnt/www/www.domainname.com;
    

Isso resolveu para mim.

Responder4

apenas para a página inicial e nada mais, eu usaria:

location / {           
    rewrite ^/$ /blog/ redirect;
}

qualquer outra coisa, como /foo/ não seria redirecionada para /blog/ .

informação relacionada