2009-08-09 64 views
1

我想實現這個工具的映射問題,我不能讓它工作。這是規則:ISAPI_Rewrite ver 3.0映射

RewriteBase/
RewriteMap mapfile txt:mapfile.txt 
RewriteRule /([^?/]+)\.asp /Products.asp?Prod=${mapfile:$1} 

例如,我想在我的網站的每個文件,該文件的格式如下:/products.asp?prod=2

  • /LAW
  • 或至少/products-LAW
取代

我創建了一個名爲mapfile.txt的映射文件,並將它與.htaccess文件一起放在根網站文件中。我只寫了一行

law 2 

沒有任何反應。

我在做什麼錯?

謝謝!

+0

你真的嘗試了什麼網址? – Gumbo 2009-08-09 08:39:00

+0

你好,我 試圖讓 http://www.mydomain.com/products.asp?prod=2 到 http://www.mydomain.com/LAW 或 HTTP://www.mydomain .COM /產品-LAW – user153230 2009-08-09 14:29:54

回答

0

我相信你在你的地圖中的變量圓銼錯誤的方式。第一個變種是比賽,二是替代:

2 law 
1

此前不久有人問,但它仍然在那裏,所以這裏的一個答案:

規則已.asp的在裏面,所以它正在尋找這個網址。由於您只需要產品名稱,請嘗試此操作,而不在規則中使用.asp。

這是下ISAPI_Rewrite V3:在映射文件

RewriteMap mapfile txt:mapfile.txt [NC] 
RewriteRule /([^/]+) /Products.asp?Prod=${mapfile:$1} [NC,QSA,L] 

使用[NC]讓你有law 2無需擔心的情況。 (這是在3.1.0.62版本和更新,這是很久以前)。

v3處理規則外的參數,所以規則不需要尋找?

QSA會將您的Prod參數附加到任何傳入參數。由於你的規則在?停止,我假設你也想處理傳入的參數。所以參數會存活。

這保持你在(第一斜線後)斜線停止的規則,所以一切從一個斜線起將進行匹配被忽略,從結果中刪除。

因此,這將重寫URL是這樣的:

/LAW to /Products.asp?Prod=2 
/lAw to /Products.asp?Prod=2 
/LAW?abc=123 to /Products.asp?Prod=2&abc=123 
/LAW/ to /Products.asp?Prod=2 
/LAW/?abc=123 to /Products.asp?Prod=2&abc=123 (slash is dropped, but parameters survive) 
/LAW/morestuff to /Products.asp?Prod=2 (/morestuff is dropped) 
/LAW/morestuff?abc=123 to /Products.asp?Prod=2&abc=123 (/morestuff is dropped, but the parameters survive) 

原始參數是追加到規則替代參數(S)的結束,從文件確定,從日誌文件中進行驗證。