2013-04-21 28 views
5

我想使用Apache的mod_rewrite爲了能夠採取的特定查詢參數的路徑的每個文件夾,例如考慮以下幾點:作爲查詢參數的Apache mod_rewrite路徑名?

基本例如

地址請求:http://domain.com/shoes/prada/image-1/

網頁中投放:http://domain.com/?cid=shoes&bid=prada&pid=image-1

在這種情況下,有3個請求的子文件夾(/shoes//prada/然後image-1),所以第一個子文件夾通過cid作爲cid,第二個爲bid,第三個爲pid

完整的示例

不過,我也想它根據請求的子文件夾的數量,例如,服務於特定頁面

地址請求:http://domain.com/shoes/prada/

網頁中投放:http://domain.com/shop.php?cid=shoes&bid=prada

到目前爲止,所有我設法找到是mod_rewrite基於正則表達式匹配,但我的路徑的也會相差很多,這就是爲什麼我想基於訪問的文件夾數量有條件(請注意,我用正則表達式不太好 - 我認爲通配符會對此有所幫助,但我不確定從哪裏開始)。

任何幫助,將不勝感激!這是相當長的囉嗦,所以如果你需要更多的信息澄清,請讓我知道!

+0

@faa首屆例子只是要表明我的問題(例如,從文件夾中取出參數)的基礎上,而第二是展示基於參數的數量被服務的頁面。通過「訪問文件夾的數量」我的意思是傳遞參數的數量與想法1文件夾= 1參數,如so /路徑/到/文件夾 - > 1 =路徑,2 =到,3 =文件夾。 – Kemebear 2013-04-21 23:01:43

回答

7

隨着工作的一點點,我能夠調整一些正則表達式,並得到一個工作規則集爲我想要的東西:

RewriteEngine on 
RewriteRule ^(.*)/(.*)/(.*)/(.)?$ product.php?tid=$1&sid=$2&eid=$3 [L] 
RewriteRule ^(.*)/(.*)/(.)?$ brand.php?tid=$1&sid=$2 [L] 
RewriteRule ^(.*)/(.)?$ shop.php?tid=$1 [L] 

這是一個例子有點不同,但它是我打算首先。

這允許的URL了改寫到四個文件夾深,每個文件夾被作爲參數的「名」,和深度的重寫URL到一個單獨的資源,例如每增加一級:

http://x.com/shoes/prada/2011-high-heels/ -> http://x.com/product.php?tid=shoes&sid=prada&eid=2011-high-heels 

測試在http://martinmelin.se/rewrite-rule-tester/

+1

你可以「接受」你自己的回覆。 – leticia 2013-07-23 13:17:53

相關問題