我需要将每个http://test.com请求重定向到http://www.test.com。如何做到这一点呢?
在服务器块中,我尝试添加
rewrite ^/(.*) http://www.test.com/$1 permanent;
但在浏览器里它说
页面未正确重定向
Firefox检测到服务器正在以一种永远不会完成的方式重定向对此地址的请求。
我的服务器块看起来像这样
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;
}
}
发布于 2012-04-25 02:29:54
执行所需操作的最佳方法是添加另一个服务器块:
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;
重要提示:if
is evil,新的server
块是正确的方法。如果可能,您必须使用位置和服务器,而不是if
。Rewrite
有时是evil too,所以用return
代替它。
发布于 2013-07-27 02:17:56
与这里的另一个答案类似,但将重写中的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。
发布于 2012-04-24 17:57:56
首先,确保您已经安装了带有HTTP重写模块的Nginx。要安装它,我们需要有pcre-library
如果上述操作已经完成,或者您已经有了它们,那么只需在您的nginx服务器块中添加以下代码
if ($host !~* ^www\.) {
rewrite ^(.*)$ http://www.$host$1 permanent;
}
从您可以使用的每个请求中删除www
if ($host = 'www.your_domain.com' ) {
rewrite ^/(.*)$ http://your_domain.com/$1 permanent;
}
因此,您的服务器块将如下所示
server {
listen 80;
server_name test.com;
if ($host !~* ^www\.) {
rewrite ^(.*)$ http://www.$host$1 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;
}
}
https://stackoverflow.com/questions/10294481
复制相似问题