Ama*_*r S 134 redirect nginx url-rewriting
我需要将每个http://test.com请求重定向到http://www.test.com.如何才能做到这一点.
在服务器块中我尝试添加
rewrite ^/(.*) http://www.test.com/$1 permanent;
Run Code Online (Sandbox Code Playgroud)
但它在浏览器中说
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.
Run Code Online (Sandbox Code Playgroud)
我的服务器块看起来像
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;
}
}
Run Code Online (Sandbox Code Playgroud)
Dmi*_*rov 270
做你想做的最好的方法是添加另一个服务器块:
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;
}
Run Code Online (Sandbox Code Playgroud)
并编辑主服务器块server_name变量,如下所示:
server_name www.test.com;
Run Code Online (Sandbox Code Playgroud)
重要提示:新server区块是正确的方法,if是邪恶的.您必须使用位置和服务器,而不是在if可能的情况下使用.Rewrite有时也是邪恶的,所以换成它return.
Dam*_*ski 16
与此处的另一个答案类似,但将重写中的http更改为$ scheme,如下所示:
server {
listen 80;
server_name test.com;
rewrite ^ $scheme://www.test.com$request_uri? permanent;
}
Run Code Online (Sandbox Code Playgroud)
并编辑主服务器块server_name变量,如下所示:
server_name www.test.com;
Run Code Online (Sandbox Code Playgroud)
我必须这样做才能将www.test.com重定向到test.com.
首先确保已使用HTTP重写模块安装了Nginx.要安装它,我们需要有pcre-library
如果上面提到的或者你已经有了它们,那么只需在你的nginx服务器块中添加以下代码即可
if ($host !~* ^www\.) {
rewrite ^(.*)$ http://www.$host$1 permanent;
}
Run Code Online (Sandbox Code Playgroud)
从您可以使用的每个请求中删除www
if ($host = 'www.your_domain.com' ) {
rewrite ^/(.*)$ http://your_domain.com/$1 permanent;
}
Run Code Online (Sandbox Code Playgroud)
所以你的服务器块看起来像
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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是 Google 上“nginx 重定向”的热门话题。如果您来到这里只是想重定向一个位置:
location = /content/unique-page-name {
return 301 /new-name/unique-page-name;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
270217 次 |
| 最近记录: |