baidu.com直接訪問網站,不跳轉www.baidu.com


       平常最多的需求是將baidu.com指向全域名www.badu.com,但是往往需求是各種各樣,這兩天就遇到一個反向需求。將baidu.com直接訪問網站,而不做跳轉。

       最近兩天在給域名證書續費,但是需要外國證書認證機構給域名注冊時留的郵箱發郵件確認,發了幾次郵件,仍然沒有收到郵件。於是,協商決定在網站下面放一個認證碼,讓國外訪問來確定域名歸屬。

以下把我在配置過程中遇到的問題總結如下:

1、tomcat下新建目錄下文件訪問404

        接到這個問題,想着很簡單,在站點目錄下面創建一個文件,然后全路徑訪問就好了,但是當真的這么做了以后,才發現事情並沒有那么簡單,檢查過權限啊,重啟啊,總是404.然后網上查資料,各種回答都有,有的說把web.xml放到新建目錄下,照做后,問題

仍然沒有解決。咨詢了開發后,才知道開發在springMVC.xml下配置了啟動tomcat后加載的資源和要攔截的地址(目錄地址)。比如我要訪問www.baidu.com/.well-known/1.txt,那么我就要在springMVC.xml下添加下面兩行內容:

    <!-- 自動掃描controller包下的所有類,使其認為spring mvc的控制器 -->
    <context:component-scan base-package="com.hengxin.qianee.controller" />
    
    <mvc:annotation-driven />
    
    <mvc:resources mapping="/css/**" location="/css/" />
    <mvc:resources mapping="/images/**" location="/images/" />
    <mvc:resources mapping="/js/**" location="/js/" />
    <mvc:resources mapping="/skippr/**" location="/skippr/" />
 .......
    <mvc:resources mapping="/sitemap.txt" location="/" />
    <mvc:resources mapping="/sitemap.xsl" location="/" />
    <mvc:resources mapping="/silian.txt" location="/" />
    <mvc:resources mapping="/.well-known/**" location="/.well-known/" />  
    <mvc:interceptors>
          <!-- 使用bean定義一個Interceptor,直接定義在mvc:interceptors根下面的Interceptor將攔截所有的請求 -->  
          <mvc:interceptor>
              <mvc:mapping path="/**"/>
              
              <!-- 需排除攔截的地址 -->
            <mvc:exclude-mapping path="/.well-known/**"/>
            <mvc:exclude-mapping path="/css/**"/>
            <mvc:exclude-mapping path="/images/**"/>
            <mvc:exclude-mapping path="/js/**"/>
            <mvc:exclude-mapping path="/skippr/**"/>
            <mvc:exclude-mapping path="/account/getCity"/>
            <mvc:exclude-mapping path="/account/getAreas"/>

2、使用baidu.com直接訪問網站。

        原本網站做的跳轉,如果輸入baidu.com的時候自動跳轉到www.baidu.com,但是現在認證方需要實現不要直接跳轉,而是直接訪問baidu.com/.well-known/1.txt,獲取到認證方發來的認證碼(這個認證碼是事先發過來的,只要放到這個1.txt中即可),而我們網站做的多層跳轉,如下圖:

配置文件如下:

 1     server
 2     {
 3     listen  80;
 4     proxy_set_header Host $http_host;
 5     proxy_set_header  X-Real-IP  $remote_addr;
 6     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
 7     server_name  www.baidu.com;
 8 
 9     location ^~/front/aboutUs/aboutUs/9
10     {
11     proxy_pass http://baidu;
12     }
13 
14     location /
15     {
16     rewrite ^(.*) https://www.baidu.com$1 permanent;
17     }
18     }
19 
20 
21     server
22     {
23     listen  80;
24     proxy_set_header Host $http_host;
25     proxy_set_header  X-Real-IP  $remote_addr;
26     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
27     server_name  baidu.com;
28 
29     location ^~/front/aboutUs/aboutUs/9
30     {
31     proxy_pass http://baidu;
32     }
33     rewrite ^(.*) http://baidu.com$1 permanent;
34 
35     }
36 
37 
38 
39     server
40     {
41     listen  443;
42     proxy_set_header Host $http_host;
43     proxy_set_header  X-Real-IP  $remote_addr;
44     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
45     server_name www.baidu.com;
46     ssl on;
47     ssl_certificate    /data/src/baidu.crt;
48     ssl_certificate_key    /data/src/baidu.key;
49     ssl_session_timeout  5m;
50     ssl_protocols    TLSv1 TLSv1.1 TLSv1.2;
51 
52     location ^~/front/aboutUs/aboutUs/9
53     {
54     rewrite ^(.*) http://www.baidu.com$1 permanent;
55     }
56 
57     location /
58     {
59     proxy_pass http://baidu;
60     }
61     }
62 
63     server
64     {
65     listen  443;
66     ssl  on;
67     proxy_set_header Host $http_host;
68     proxy_set_header  X-Real-IP  $remote_addr;
69     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
70     server_name baidu.com;
71     ssl_certificate    /data/src/baidu.crt;
72     ssl_certificate_key    /data/src/baidu.key;
73     ssl_session_timeout  5m;
74     ssl_protocols    TLSv1 TLSv1.1 TLSv1.2;
75     rewrite ^(.*) https://www.baidu.com$1 permanent;
76 
77     location /
78     {
79     proxy_pass https://baidu;
80     }
81     }
nginx.conf

       本來想把其中的baidu.com的跳轉給取消掉,結果,測試結果顯示跳轉太多,無法顯示;然后又想把443的跳轉和其他的多余的跳轉都注銷掉,測試結果顯示了404,上述兩種方法都否決了。

查閱了一番資料,仍然未果。

於是咨詢了朋友,他們建議把80和443的虛擬主機配置上別名。但是仔細檢查了下配置文件,心想即使配置上別名,仍然會將baidu.com跳轉到www.baidu.com;但是仍然抱着破罐破摔的心態,決定嘗試下,結果配置完后,居然成功了。

下面是配置過后的配置文件:

 server
    {
    listen  80;
    proxy_set_header Host $http_host;
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    server_name  www.baidu.com baidu.com;

    location ^~/front/aboutUs/aboutUs/9
    {
    proxy_pass http://baidu;
    }

    location /
    {
    rewrite ^(.*) https://www.baidu.com$1 permanent;
    }
    }

    server
    {
    listen  443;
    proxy_set_header Host $http_host;
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    server_name www.baidu.com baidu.com;
    ssl on;
    ssl_certificate    /data/src/baidu.crt;
    ssl_certificate_key    /data/src/baidu.key;
    ssl_session_timeout  5m;
    ssl_protocols    TLSv1 TLSv1.1 TLSv1.2;

    location ^~/front/aboutUs/aboutUs/9
    {
    rewrite ^(.*) http://www.baidu.com$1 permanent;
    }

    location /
    {
    proxy_pass http://baidu;
    }
    }

注:以上網站網址baidu.com是化名,並非真正網站網址。為保護網站信息,借用而已。

 


免責聲明!

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



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