2010-09-19 64 views
0

我是realy,真的是重寫規則中的新手..
我有一個搜索表單和三個輸入的php腳本:title;類別;地區。 用戶可以通過標題類別或區域搜索表單參數重寫規則

我的規則

RewriteRule ^list/(.*)/(.*)/(.*)/$ /List.php?category=$1&region=$2&title=$3 [L] 
RewriteRule ^list/(.*)/(.*)/$ /List.php?category=$1&region [L] 
RewriteRule ^list/(.*)/$ /List.php?category=$1 [L] 
RewriteRule ^list/(.*)/(.*)/$ /List.php?region=$2&title=$3 [L] 
RewriteRule ^list/(.*)/(.*)/$ /List.php?category=$12&title=$3 [L] 

搜索,這樣的參數不能在他們搜索按標題有時只按類別的區域特定order.Sometime ... ..等等,直到我完成所有的排列。 有沒有辦法控制變量得到這個:

/list/category/ /list/region/ 
/list/region/category/ 
/list/category/region/ 
/list/region/title/..... 

? 由於事先

+0

你如何從搜索表單中獲得這樣的格式?使用javascript?爲什麼要使用重寫進行搜索?它是無用的 – 2010-09-19 13:37:08

+0

如何區分'/ list/foo /'或'/ list/foo/bar /'中的'foo'是一個類別還是一個區域? – Gumbo 2010-09-19 13:48:15

回答

0

爲什麼不使用

RewriteRule ^List\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /List.php [L] 

所以每個請求IST redireted到list.php的

然後用

$folder = explode('/',substr($_SERVER['REQUEST_URI'],1)); 

爆炸它http://example.com/list/region/title

folder[0] = 'list'; 
folder[1] = 'region'; 
folder[2] = 'title'; 
+0

謝謝,但是...如果列表中的某個參數丟失會怎麼樣 - 我如何知道文件夾[]是否是真正的參數讓我們說標題 - 例如。 title ='title'。我想我錯過了一些東西,我不知道... – morowind 2010-09-24 04:54:43

+0

我會盡量多說: – morowind 2010-09-24 08:26:07

+0

我會試着更加明確:如果我可以有一個規則爲http:// localhost/category-vehicle/subcategory-cars/brand-honda/region-london /以這種格式(參數名稱是類別,子類別,品牌,區域) - 我如何在PHP中解析這個?更重要的是如果發生用戶只選擇地區和品牌,如何追加qs?只是我不明白... – morowind 2010-09-24 08:37:22