Nginx配置——區分PC或手機訪問不同域名


新官網上線,但在手機上訪問新官網的體驗很差,要求在手機上訪問新官網時訪問舊官網,可以通過修改Nginx配置來實現自動跳轉。
首先是新官網的Nginx配置文件加個跳轉判斷,通過user-agent判斷來源是移動端還是PC端:

server {
    listen 80;
    server_name www.7d.com 7d.com; // 新官網域名
    rewrite .* https://$host$request_uri last;
}

server {
    listen       443 ssl;
    server_name www.7d.com 7d.com;  // 新官網域名
    root  /data/7d;
    charset utf-8;
    ssl_certificate /usr/local/nginx/_.7d.com.crt;
    ssl_certificate_key /usr/local/nginx/_.7d.com.key;

    rewrite /s1$ http://s1.7d.com/start last;

    if ( $http_user_agent ~* "(Android|iPhone|Windows Phone|UC|Kindle)" ){ // 跳轉判斷
        rewrite  ^/(.*)$  https://m.7d.com$uri redirect; // redirect表示302跳轉(暫時性轉移) 
    }     
    ……
}

 然后是舊官網的配置文件改成新域名,同樣要做跳轉判斷,把不是移動端訪問的請求跳轉回新官網。

server {
    listen 80;
    server_name m.7d.com; // 舊官網域名
    rewrite .* https://$host$request_uri last;
}

server {
    listen       443 ssl;
    server_name m.7d.com;  // 舊官網域名
    root  /data/7d;
    charset utf-8;
    ssl_certificate /usr/local/nginx/_.7d.com.crt;
    ssl_certificate_key /usr/local/nginx/_.7d.com.key;

    rewrite /s1$ http://s1.7d.com/start last;

    if ( $http_user_agent !~* "(Android|iPhone|Windows Phone|UC|Kindle)" ){ // ~前加個!,如果不是移動端訪問,則跳轉回新官網。
        rewrite  ^/(.*)$  https://m.7d.com$uri redirect; // redirect表示302跳轉
    }     
    ……
}

這樣就可以實現手機訪問新官網7d.com的域名時,實際訪問的是舊官網的內容。點擊瀏覽器的地址欄,會發現域名是m.7d.com。

其實就是根據HTTP_USER_AGENT來做判斷,利用Nginx做一個302跳轉,如果rewrite語句中的最后一個單詞redirect改為permanent,則表示301跳轉(永久性轉移)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM