达到完美境界并不是无以复加,而是无可去除。——<安托万·德·圣·埃克苏佩里>
几乎每个网站都需要重定向。许多网站决定通过www和非www网站为他们的访问者提供服务,只是以防用户在浏览器中输入它。
但对于搜索引擎优化来说,当你在两个不同的域名上使用同一个网站时,这就不好了。下面是如何用 Nginx
解决这个问题。
用if语句重定向www到非www
1 2 3 4 5 6 7 8 9 10 11
| server { listen 80;
server_name www.example.com example.com;
if ($host = 'www.example.com' ) { # redirecting www.example.com to example.com # path, query string are retained rewrite ^/(.*)$ http://example.com/$1 permanent; } }
|
请注意,NGINX
配置中,if
被认为是邪恶的http://wiki.nginx.org/IfIsEvil
但在这种情况下是完全OK的。官方文件称,有两种情况下if是“100%安全的”:
1 2 3 4 5 6
| if ($request_method = POST ) { return 405; } if ($args ~ post=140){ rewrite ^ http: }
|
不用if声明将www重定向到非www
在这种情况下,技巧是我们必须定义两个服务器块。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| server { listen 80; server_name www.example.com;
# redirecting www.example.com to example.com # path, query string are retained return 301 http: }
server { listen 80; server_name example.com; ... }
|
将非www重定向到www
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| server { listen 80; server_name example.com;
# redirecting example.com to www.example.com # path, query string are retained return 301 http: }
server { listen 80; server_name www.example.com; ... }
|
参考
关注【公众号】,了解更多。
赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!