У меня есть блог, размещенный на http://site.com/blog.
Как мне указать nginx перезаписать запросы из site.com
к site.com/blog
?
Это не должно быть постоянным.
location = / {
rewrite ^ http://site.com/blog/ redirect;
}
Это просто будет выполнять запросы специально для корня. Если нужно все ловить (перенаправить http://site.com/somearticle/something.html
к http://site.com/blog/somearticle/something.html
), тогда вам понадобится что-то более сложное:
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;
}
попробуйте вместо этого:
location = / {
return 301 /blog/;
}
Ключ здесь знак равно условное обозначение.
У меня это не сработало. Вот что сработало:
Откройте файл конфигурации NGINX для вашего сайта. Внутри блока сервера добавьте путь к корневому каталогу и установите порядок приоритета для файлов:
root /mnt/www/www.domainname.com;
index index.php index.html index.htm;
Создайте пустой блок местоположения перед все остальные блоки вашего местоположения:
location /latest {
# Nothing in here; this is to avoid redirecting for this location
}
Закомментируйте директиву корневого каталога в блоке location / {} и добавьте перенаправление, чтобы оно выглядело следующим образом:
location / {
# root /mnt/www/www.domainname.com;
index index.php index.html index.htm;
rewrite ^/(.*)$ http://www.domainname.com/latest/$1 redirect;
}
Убедитесь, что ваше местоположение ~ .php $ block указывает на его корень
root /mnt/www/www.domainname.com;
Это исправило это для меня.