Как перенаправить url в NGINX
мне нужно перенаправить каждый http://test.com запрос к http://www.test.com. Как это можно сделать.
в серверном блоке я попытался добавить
rewrite ^/(.*) http://www.test.com/ permanent;
но в браузере он говорит
The page isn't redirecting properly
Firefox has detected that the server is redirecting the request for
this address in a way that will never complete.
мой серверный блок выглядит как
server {
listen 80;
server_name test.com;
client_max_body_size 10M;
client_body_buffer_size 128k;
root /home/test/test/public;
passenger_enabled on;
rails_env production;
#rewrite ^/(.*) http://www.test.com/ permanent;
#rewrite ^(.*)$ $scheme://www.test.com;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
3 ответов:
лучший способ сделать то, что вы хотите, чтобы добавить еще один блок сервера:
server { #implemented by default, change if you need different ip or port #listen *:80 | *:8000; server_name test.com; return 301 $scheme://www.test.com$request_uri; }и измените переменную server_name основного блока сервера следующим образом:
server_name www.test.com;важно: New
serverблок-это правильный способ сделать это,ifзло. Вы должны использовать расположение и серверы вместоifесли это возможно.Rewriteиногда зло, поэтому заменил егоreturn.
похоже на другой ответ здесь, но измените http в перезаписи на $ scheme следующим образом:
server { listen 80; server_name test.com; rewrite ^ $scheme://www.test.com$request_uri? permanent; }и измените переменную server_name основного блока сервера следующим образом:
server_name www.test.com;Я должен был сделать это, чтобы перенаправить www.test.com к test.com.
сначала убедитесь, что вы установили Nginx с модулем перезаписи HTTP. Для установки этого нам нужно иметь pcre-библиотеку
Как установить библиотеку pcre
Если вышесказанное сделано или если они у вас уже есть, то просто добавьте приведенный ниже код в свой серверный блок nginx
if ($host !~* ^www\.) { rewrite ^(.*)$ http://www.$host permanent; }удалить www из каждого запроса, вы можете использовать
if ($host = 'www.your_domain.com' ) { rewrite ^/(.*)$ http://your_domain.com/ permanent; }Так что ваш серверный блок будет выглядеть
server { listen 80; server_name test.com; if ($host !~* ^www\.) { rewrite ^(.*)$ http://www.$host permanent; } client_max_body_size 10M; client_body_buffer_size 128k; root /home/test/test/public; passenger_enabled on; rails_env production; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
Comments