2012-12-13 47 views
2

我是htaccess重定向的新手,我在工作方式上遇到了一些麻煩,我認爲這是因爲我需要一些不同的東西。htaccess連續重定向

我想這

http://localhost/webroot/type_enduro-cross-trial/brand_yamaha/ 

被重定向到

http://localhost/webroot/search.php?type=enduro-cross&trial=brand_yamaha 

我用值從產品的過濾器;但原始URL分兩步生成。

例子:

用戶到主網頁(http://localhost/webroot),並希望通過類型進行過濾,所以他點擊時,過濾器被應用和網址更改爲http://localhost/webroot/type_enduro-cross-trial和它的作品!

但我希望用戶能夠添加更多的過濾器,所以現在他想按某個品牌進行過濾,並且當他點擊URL時更改爲http://localhost/webroot/type_enduro-cross-trial/brand_yamaha/。等更多的過濾器。

這種重寫規則的工作,以獲得第一個參數的值:

RewriteRule ^([^_/]+)_([^_/]+)/([^_/]*) search.php?$1=$2 [L]

但是當我添加更多的過濾器,這顯然忽略了他們,我不知道該怎樣必須重寫規則應該想法是。

謝謝,抱歉我的英文!

回答

1

你想達到什麼與.htaccess並不重要。與其解決.htaccess中的這個複雜問題,只是在文件中留下單個規則,並在search.php腳本中完成這項工作。這可以讓你有更大的靈活性。

只是通過一切作爲一個參數傳遞給PHP腳本,如:

RewriteRule /pages/(.+) /page.php?page=$1 [QSA] 

在你的PHP腳本,你做一些字符串處理上$_GET['page'](從上面的例子重寫規則示範),例如通過使用explode

在PHP內部,你可以更好地處理數組,這在.htaccess文件中完全不能使用。

已經取自原始Apache HTTP Mod_Rewrite documentation的實例。

0
RewriteRule ^/(.*)/(.*)/$ search.php?type=$1&trial=$2 [L] 

使用$ _GET [ '類型']和$ _GET [ '試驗'],以獲得2個變量 其中$ _GET [ '類型'] = type_enduro交試驗和$ _GET [」試驗'] = brand_yamaha

http://localhost/webroot/search.php?type=enduro-cross&trial=brand_yamaha 
http://localhost/webroot/type_enduro-cross-trial/brand_yamaha/ 

$url = 'http://www.site.com/' . $_GET["type"] . '/' . $_GET["trial"] . '/';