首頁  >  問答  >  主體

nginx重定向帶參數的問題

嗯,我只把關鍵字換成aaabbb了。
下面這個意思是我訪問 /aaabbb/anime 實際上是請求的/ab_anime.php

#
location /aaabbb/ {
        rewrite ^/aaabbb/(\w+)$ /ab_.php last;
        rewrite "/aaabbb/(\w+)/(\d{1,2})$" /aaabbb/?id=? permanent;
    }

然後我想弄個第一次點進去就帶參數,同時網址列上不能看到,然後每次刷新的話就沒參數。

所以查了一下不帶參數是後面加問號,但發現沒用。
是不是因為我自己拼了$1?id=$2這個的緣故。
只是在網址列給後面加的參數會不見。然而並沒有什麼卵用。

剛才又看到了這個

    rewrite  ^/test.php  /new  permanent;       //重写向带参数的地址

    rewrite  ^/test.php  /new?  permanent;      //重定向后不带参数

    rewrite  ^/test.php   /new?id=$arg_id?  permanent;    //重定向后带指定的参数

我都不知道怎麼辦了…難道是要再寫一條然後用$arg? ? ?

滿天的星座滿天的星座2713 天前838

全部回覆(1)我來回復

  • 習慣沉默

    習慣沉默2017-05-16 17:17:56

    我覺得題主把問題複雜化了。
    當然我並不確定我真的理解了題主的需求,試闡述如下:

    1. 用戶請求/aaabbb/anime

    2. nginx正確解析為/aaabbb.php?id=anime,回內容A給使用者

    3. 用戶的網址列顯示為/aaabbb,並享受內容A

    4. 用戶刷新瀏覽器,定向為/aaabbb,享受/aaabbb.php的內容B。 (或繼續閱讀內容A)

    這裡有一個bug,請求為/aaabbb/anime的時候,網址列最多變成/aaabbb/anime#xxxxxx,#之前是不會變得,#之後的是hash。如果想要把網址列變成/aaabbb,必須要有一個redirect的動作。

    我的思路如下:(如果採取了答案,請評論我解決方案裡不正確的內容)

    1. nginx 重寫策略為 rewrite ^/aaabbb/(w+)$ /redirect.php?target= last;

    2. redirect.php把target寫入session,並返回redirect到/aaabbb上(能且只能透過此方法修改網址列)

    3. /aaabbb/導航到index.php,讀取session裡的target,抹掉(或不抹掉)它,呼叫對應php檔案回傳內容。

    4. 刷新/aaabbb時,導覽到index.php,同樣根據session來回應請求。

    回覆
    0
  • 取消回覆