2013-02-14 29 views
0

我有一個搜索引擎,我希望搜索查詢的URL更加人性化。 選擇的分類引擎支持搜索,可以說CAT1,CAT2和CAT3在我的情況下,URL重寫的正則表達式是什麼?

如果用戶選擇CAT1和CAT3在搜索時,URL看起來像: mysite.com/search.php?q=productname&cats=cat3,cat1

我想重寫URL看如下面的形式: mysite.com/productsearch/cat1-cat3/productname

是否可以重寫該規則並用,替換-

+0

你想cat3'和'cat1'的'順序被轉換,還是一個錯字? – Floris 2013-02-14 14:49:35

+0

否,原始URL和重寫URL中的順序都是不必要的。 – 2013-02-14 14:51:36

回答

0

sed 's/search.php\?q=\(.*\)&cats=\(cat[0-9]\),\(cat[0-9]\)/productsearch\/\2-\3\/\1/g'

應接近...

解析如下:?

「發現,後面的東西 」的search.php Q =「,到」 &」,並把它在緩衝區1

「發現後面的兩件事‘’形式的‘貓=貓後面跟着一個數字’,並用逗號隔開 - 把它們放到緩衝區2和3」

「與productsearch/(buffer 2)-(buffer 3)/(buffer 1)更換整個事情」這可能不是完美的,但它應該是非常接近...測試輸出:

echo 'mysite.com/search.php?q=productname&cats=cat3,cat1' | sed 's/search.php\?q=\(.*\)&cats=\(cat[0-9]\),\(cat[0-9]\)/productsearch\/\2-\3\/\1/g' 
mysite.com/productsearch/cat3-cat1/productname 
+0

我剛剛意識到你可能想使用Apache的mod_rewrite語法...所以這不適合你。我將在今天晚些時候再次拍攝它。同時,也許有人可以從我的想法得到靈感...... – Floris 2013-02-14 15:30:18