2010-06-11 61 views
2

對於正則表達式,我是一個完整的n00b。我需要這些重定向:使用多個查詢字符串進行Mod重寫

(1)

www.mysite.com/bike.php?id=001&product=Product-Name&source=Source-Name 
should become -> www.mysite.com/Source-Name/001-Product-Name 

(2)

www.mysite.com/car.php?id=002&product=Product-Name&source=Source-Name 
should become -> www.mysite.com/Source-Name/002-Product-Name 

(3)

www.mysite.com/moto.php?id=005&product=Product-Name&source=Source-Name 
should become -> www.mysite.com/Source-Name/005-Product-Name 

(4)

www.mysite.com/stores.php?id=002&name=Store-Name 
should become -> www.mysite.com/002-Store-Name 

編輯:我應該澄清,有3個產品頁面,這都應該重定向到相同格式的URL

任何幫助非常感謝:)

+1

你確定你不需要他們嗎?大多數人都會。 – 2010-06-11 07:03:14

+0

這次你很幸運,但主要是在互聯網上提問時,你不能指望其他人做你的工作。其他人願意幫助你,如果你表明你已經付出了一些努力來解決這個問題,它會有所幫助。就你而言,你可以向我們展示你提出的RewriteRule。即使這是完全錯誤的,你已經表明你自己嘗試過。 – Sjoerd 2010-06-11 07:31:06

+0

@Iganacio - 嘿,你說得對。這就是爲什麼正則表達式沒有工作。再次,小白:p 感謝您的澄清 – Boris 2010-06-11 07:44:52

回答

1
RewriteCond %{REQUEST_URI} www.mysite.com/(.+)/(\d+)-(.+) /products.php?id=$2&product=$3&source=$1 

RewriteCond %{REQUEST_URI} www.mysite.com/(\d+)-(.+) /products.php?id=$1&name=$2 

我認爲它工作的很好;)

1
RewriteEngine On 
RewriteRule ^(\d+)-(.+)$ /stores.php?id=$1&name=$2 [L] 
RewriteRule ^(.+)/(\d+)-(.+)$ /products.php?id=$2&product=$3&source=$1 [L] 
+0

對不起,我將如何顛倒這些規則?感謝:) – Boris 2010-06-11 08:05:15

+0

你的意思是說用戶應該輸入並看到這個長而醜陋的URL,它必須在短而乾淨的URL中悄悄轉換?這與每個人所做的完全相反:給出一個可見的「漂亮」URL並讓服務器處理引擎蓋下的髒東西。 – 2010-06-11 08:14:47

+0

例如。瀏覽器會在網址列中顯示「http://mysite.com/Source-Name/001-Product-Name」,但實際頁面是從http://mysite.com/bike.php?id=001&product=產品名稱和來源=來源名稱 – Boris 2010-06-11 08:33:35