2013-02-12 341 views
3

我正在使用nginx与我的Java应用程序,我的问题是nginx正在合并斜杠,我无法将我的网站重定向到正确的版本。Nginx merge_slashes重定向

例如:

http://goout.cz/cs/koncerty///praha/ 

合并到

http://goout.cz/cs/koncerty/praha/ 

,然后我无法认识到错误的URL并执行重定向。

我试图设置

merge_slashes off; 

然后:

rewrite (.*)//(.*) $1/$2 permanent; 

但这并没有影响和//停留在URL。

我该如何做到这一点?

回答

5

试试这个(未经测试):

merge_slashes off; 
rewrite (.*)//+(.*) $1/$2 permanent; 

这可能导致多次重定向如果有斜线的多组虽然。

像这样:

http://goout.cz/////cs/koncerty///praha/ 

可能会去:

http://goout.cz/cs/koncerty///praha/ 

后来总算:

http://goout.cz/cs/koncerty/praha/ 
1

这工作不错,但我的设置添加port_in_redirect off;是必要的。

1

我们遇到了同样的问题,因为有错误,我们在URL中添加了两个斜杠,而nginx将为两个斜杠返回301错误代码。

对我来说,解决办法是:

添加merge_slashes off;nginx.conf文件,和在该位置的部分,添加rewrite (.*)//+(.*) $1/$2 break;

我的位置设置如下图所示:

location/{ 
     rewrite (.*)//+(.*) $1/$2 break; 
     proxy_pass http://http_urltest; 
     proxy_http_version 1.1; 
     proxy_set_header Connection ""; 
     proxy_buffers 4096 32k; 
     proxy_buffer_size 32K; 
     proxy_busy_buffers_size 32k; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 

后添加这两行代码,当我用两个斜杠访问我的URL时,它会用一个斜杠返回结果。

-1

试试这个(包括nginx的仅与openresty配置nginx的),你可以通过做这些301重定向提高网站的搜索引擎优化

请保持服务器节内此代码为您的nginx网站的conf文件

server { 

........ 
........ 

set $test_uri $scheme://$host$request_uri; 
if ($test_uri != $scheme://$host$uri$is_args$args) { 
    rewrite^$scheme://$host$uri$is_args$args? permanent; 
} 

location { 
    ................ 
    ................ 
} 

}

其工作适合我和我使用此代码现在

例如: -

请求URL-http://www.test.com//test///category/item//value/

结果网址: - http://www.test.com/test/category/item/value/

301重定向使网站的搜索引擎优化将不会下降

+0

'如果' 是邪恶:HTTPS://www.nginx。 COM /资源/维基/开始/主题/深度/ ifisevil / – MacroMan 2018-02-14 11:16:35