簡體   English   中英

Apache mod_rewrite路徑名作為查詢參數?

[英]Apache mod_rewrite path name as query parameters?

我想使用Apache的mod_rewrite ,以便能夠將路徑的每個文件夾作為特定的查詢參數,例如考慮以下內容:

基本的例子

網址要求: http://domain.com/shoes/prada/image-1/http://domain.com/shoes/prada/image-1/

頁面服務: http://domain.com/?cid=shoes&bid=prada&pid=image-1http://domain.com/?cid=shoes&bid=prada&pid=image-1

在這種情況下,有3個子文件夾請求( /shoes//prada/ then image-1 ),因此第一個子文件夾在實際頁面中作為cid傳遞,第二個作為bid ,第三個作為pid

完整的例子

但是,我還希望它根據所請求的子文件夾的數量來服務特定頁面,例如

網址要求: http://domain.com/shoes/prada/http://domain.com/shoes/prada/

頁面服務: http://domain.com/shop.php?cid=shoes&bid=pradahttp://domain.com/shop.php?cid=shoes&bid=prada

到目前為止,我設法找到的是基於正則表達式的mod_rewrite匹配,但我的路徑會有很大差異,這就是為什么我希望根據訪問的文件夾數量有條件(請注意,我不是很好)正則表達式 - 我認為一個通配符會對此有所幫助,但我不確定從哪里開始)。

任何有關這方面的幫助將不勝感激! 這是相當長的啰嗦,所以如果您需要更多信息澄清,請告訴我!

通過一些工作,我能夠調整一些正則表達式並獲得我想要的工作規則集:

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/上測試過

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM