
У меня есть блог, размещенный наhttp://site.com/blog.
Как мне указать nginx переписывать запросы с site.com
на site.com/blog
?
Это не должно быть постоянным.
решение1
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;
}
решение2
попробуйте вместо этого это:
location = / {
return 301 /blog/;
}
Ключевым моментом здесь является"="символ.
решение3
Это не сработало для меня. Вот что сработало:
Откройте файл конфигурации 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; }
Убедитесь, что ваш блок location ~ .php$ указывает на свой корень
root /mnt/www/www.domainname.com;
Это помогло мне.
решение4
только для домашней страницы и ничего больше я бы использовал:
location / {
rewrite ^/$ /blog/ redirect;
}
все остальное, например /foo/, не будет перенаправлено на /blog/.