本人現在有個需求是做seo優化,代碼用的yii框架,現在要把部分原來的長鏈接改為短鏈接,對此現在有兩個思路,一個是在PHP裡面做301跳轉,一個是在nginx設定檔做301,問題來了:我在nginx設定檔location裡匹配不了?,打比方,原來的連結是xxx.bbb.ccc/index.php?r=pc/index/index ,現在使用xxx.bbb.ccc/index,請問怎麼來配對這個?
按照你的意思,不應該是訪問 xxx.bbb.ccc/index -> xxx.bbb.ccc/index.php?r=pc/index/index 的嗎?
xxx.bbb.ccc/index
xxx.bbb.ccc/index.php?r=pc/index/index
這樣的話,沒必要配對到?的呀。
?
直接寫 rewrite 規則就可以了
rewrite
rewrite ^/index$ /index.php?r=pc/index/index last;
如果是反向的那就用 if 判斷好了
if
如:
server { server_name test.dev; location / { if ($request_uri ~ '/index.php\?r=pc/index/index') { return 301 http://test.dev/index; } } }
測試結果:
> curl -I 'http://test.dev/index.php?r=pc/index/index' HTTP/1.1 301 Moved Permanently Server: nginx/1.10.3 Date: Fri, 30 Jun 2017 09:04:12 GMT Content-Type: text/html Content-Length: 185 Connection: keep-alive Location: http://test.dev/index
按照你的意思,不應該是訪問
xxx.bbb.ccc/index
->xxx.bbb.ccc/index.php?r=pc/index/index
的嗎?這樣的話,沒必要配對到
?
的呀。直接寫
rewrite
規則就可以了如果是反向的那就用
if
判斷好了如:
測試結果: