2014-08-29 32 views
0

空變量我有這個在我的htaccess:如何允許國防部重寫

RewriteRule ^search/([^/]*)/?$ search.php?search=$1 [NC,L,QSA] 
RewriteRule ^search/([^/]*)/([^/]+)/?$ search.php?search=$1&cat=$2 [NC,L,QSA] 

如果搜索的定義,工作正常。

有時,搜索變量可以留空或''來搜索整個類別。

這是如何與mod重寫?

當搜索定義這將是:

search/search-variable/category-name 

如果搜索爲空或「」將國防部重寫它顯示爲這樣的事情?

search//category-name 

或跳過變量一起這樣的:

search/category-name 

回答

0

你怎麼search/category-namesearch/search-term區分?通過概念分類是什麼以及搜索詞是什麼,或者通過查詢搜索詞是否存在作爲分類。 Mod_rewrite不能這樣做。它只是匹配一個模式,並且由於你有兩個相同的模式用於2種不同的事情,所以你必須在搜索文件中區分它們。

除此之外,像example.com/search//something這樣的網址可能在內部由表示,因爲它仍然是資源的路徑,而不是任意字符串。

RewriteRule ^search/([^/]*)/?$ search.php?search=$1 [L,QSA] 
RewriteRule ^search/([^/]*)/([^/]*)/?$ search.php?search=$1&cat=$2 [L,QSA] 

在search.php中檢查$_GET['search']是一個類別還是一個搜索項。

或者將你的網址改爲這樣:search/search-term/category/category-namesearch/category/category-name。然後你可以確定每個路徑段是什麼:

RewriteRule ^search/([^/]+)/category/([^/]+)/?$ search.php?search=$1&cat=$2 [L,QSA] 
RewriteRule ^search/category/([^/]+)/?$ search.php?cat=$1 [L,QSA]