嗯,我只把關鍵字換成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? ? ?
我覺得題主把問題複雜化了。
當然我並不確定我真的理解了題主的需求,試闡述如下:
用戶請求/aaabbb/anime
nginx正確解析為/aaabbb.php?id=anime,回內容A給使用者
用戶的網址列顯示為/aaabbb,並享受內容A
用戶刷新瀏覽器,定向為/aaabbb,享受/aaabbb.php的內容B。 (或繼續閱讀內容A)
這裡有一個bug,請求為/aaabbb/anime的時候,網址列最多變成/aaabbb/anime#xxxxxx,#之前是不會變得,#之後的是hash。如果想要把網址列變成/aaabbb,必須要有一個redirect的動作。
我的思路如下:(如果採取了答案,請評論我解決方案裡不正確的內容)
nginx 重寫策略為
rewrite ^/aaabbb/(w+)$ /redirect.php?target= last;
redirect.php把target寫入session,並返回redirect到/aaabbb上(能且只能透過此方法修改網址列)
/aaabbb/導航到index.php,讀取session裡的target,抹掉(或不抹掉)它,呼叫對應php檔案回傳內容。
刷新/aaabbb時,導覽到index.php,同樣根據session來回應請求。