如何在 Nginx 中重定向 URL [英] How to redirect a URL in Nginx
问题描述
我需要将每个 http://test.com 请求重定向到 http://www.test.com.这怎么可能.
I need to redirect every http://test.com request to http://www.test.com. How can this be done.
在服务器块中我尝试添加
In the server block I tried adding
rewrite ^/(.*) http://www.test.com/$1 permanent;
但在浏览器中显示
页面没有正确重定向
Firefox 检测到服务器正在以永远不会完成的方式重定向对该地址的请求.
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/$1 permanent;
#rewrite ^(.*)$ $scheme://www.test.com$1;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
推荐答案
做你想做的最好的方法是添加另一个服务器块:
Best way to do what you want is to add another server block:
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 变量如下:
And edit your main server block server_name variable as following:
server_name www.test.com;
重要:新的 server
块是正确的方法,if
是邪恶的.如果可能,您必须使用位置和服务器而不是 if
.Rewrite
有时也是 邪恶,所以用return
代替.
Important: New server
block is the right way to do this, if
is evil. You must use locations and servers instead of if
if it's possible. Rewrite
is sometimes evil too, so replaced it with return
.
这篇关于如何在 Nginx 中重定向 URL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!