2015-01-21 75 views
-2

URL重寫我有大量的產品標識URL的nginx的和PHP

domain.com/product.php?product_id=123&app_data=xyz123 

我的使用情況是那些URL重寫以下格式

/產品/產品ID /應用程序數據

我寫了一條重寫規則。

rewrite ^/product/productid/(.*)  /product.php?product_id=$1&$query_string last; 

但是,當我打

domain.com/product.php?product_id=123412&app_data=cHJvZHVjdF9pZD0xODc2NTEmZGVmU2 

它不重寫

domain.com/product/productid/appdata 

回答

0

完全改寫發生在服務器上,它需要一個,如

rewrite A B 

如果A是domain.com/product.php?product_id=123412&app_data=cHJvZHVjdF9pZD0xODc2NTEmZGVmU2,那麼你正在做向後

嘗試:

location/{ 
    if ($query_string ~ "^product_id=([^&]+)&app_data=([^&\ ]+)") { 
    rewrite ^/product.php$ /product/%1/%2? redirect; 
    } 
} 

location /product { 
    rewrite ^/product/([^/]+)/([^/]+)$ /product.php?product_id=$1&app_data=$2 break; 
} 
+0

,如果我訪問 ** domain.com/product.php的product_id = 123412&app_data文件= cHJvZHVjdF9pZD0xODc2NTEmZGVmU2 ** 這不解決我的問題.. 我沒有重定向到** domain.com/product/productid/appdata ** 但如果我直接點擊** domain.com/product/productid/appdata **我得到的結果,但我的CSS和圖像樣式被打破。 還有一件事,我沒有使用任何PHP框架。它是硬編碼的自寫代碼。 – user3382916 2015-01-21 12:25:28

0

,如果你想重定向或內部重寫目前還不清楚。第一種情況:

location /product.php { 
    rewrite 301 http://domain.com/product/$arg_product_id/$arg_app_data; 
} 

二:

location/{ 
    rewrite ^/product.php$ http://domain.com/product/$arg_product_id/$arg_app_data last; 
}