
Tenho um blog hospedado emhttp://site.com/blog.
Como instruo o nginx a reescrever solicitações de site.com
para 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.html
para 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:
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;
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 }
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; }
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/ .