nginx url重寫

weixin_34015860發表於2016-08-03

 

[root@web01 www]# cat /app/server/nginx/conf/vhosts/default.conf
server {
    listen 80 default_server;
    server_name localhost;
    root /app/www;
    index index.php index.htm index.html;
    rewrite /last.html /index.html last;
    rewrite /break.html /index.html break;
    rewrite /redirect.html /index.html redirect;#302臨時重定向
    rewrite /permanent.html /index.html permanent;#301永久重定向
    rewrite ^/html/(.+?).html$ /post/$1.html permanent;
    location ~ .*\.(php|php5)?$
    {
       #fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
    }
    access_log  /app/log/nginx/access/default.log;
}
[root@web01 www]# tree /app/www/
/app/www/
├── index.html
├── index.php
└── post
    └── test.html

1 directory, 3 files
[root@web01 www]# cat /app/www/index.html 
clnking@163.com
[root@web01 www]# cat /app/www/post/test.html 
post/test.html

 

[root@web01 www]# curl 192.168.1.24/last.html
clnking@163.com
[root@web01 www]# curl --head 192.168.1.24/last.html
HTTP/1.1 200 OK
Server: nginx/1.4.4
Date: Tue, 02 Aug 2016 01:53:10 GMT
Content-Type: text/html
Content-Length: 16
Last-Modified: Mon, 18 Jul 2016 11:46:03 GMT
Connection: keep-alive
ETag: "578cc17b-10"
Accept-Ranges: bytes
[root@web01 www]# curl 192.168.1.24/break.html
clnking@163.com
[root@web01 www]# curl --head 192.168.1.24/break.html
HTTP/1.1 200 OK
Server: nginx/1.4.4
Date: Tue, 02 Aug 2016 01:54:40 GMT
Content-Type: text/html
Content-Length: 16
Last-Modified: Mon, 18 Jul 2016 11:46:03 GMT
Connection: keep-alive
ETag: "578cc17b-10"
Accept-Ranges: bytes
[root@web01 www]# curl 192.168.1.24/redirect.html
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx/1.4.4</center>
</body>
</html>

[root@web01 www]# curl 192.168.1.24/permanent.html
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.4.4</center>
</body>
</html>

[root@web01 www]# curl 192.168.1.24/html/test.html
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.4.4</center>
</body>
</html>

 注意:因為301和302不能簡單的只返回狀態碼,還必須有重定向的URL,這就是return指令無法返回301,302的原因了;

 301重定向可以說是網頁更改地址後對搜尋引擎最好友好的方法,它代表永久性轉移。
一般來說,只要不是暫時搬移的情況,我們都建議使用301來做轉址。 而且從搜尋引擎優化的角度來看,301重定向是網址進行重定向最為可行的一種辦法。當網站的域名發生變更後,搜尋引擎只對新網址進行索引,
同時又會把舊地址下原有的外部連結如數轉移到新地址下,從而不會讓網站的排名因為網址變更而收到絲毫影響。因此,
在使用301永久性重定向命令讓多個域名指向網站主域時, 亦不會對網站的排名產生任何負面影響。 【301與302轉向的區別】 實施301後,新網址完全繼承舊網址,舊網址的排名等完全清零。 實施302後,對舊網址沒有影響,但新網址不會有排名。

 

相關文章