2009-02-12 97 views
0

我的問題是一個簡單的問題,但我似乎無法找到答案。我目前正在爲一個網站做一些URL重寫,但我遇到了一個問題。目前最基本的規則我也基本是這樣的:尋找一些URL重寫幫助

RewriteRule ^([a-zA-Z]+)/(([a-zA-Z]+)/?$ index.php?mod=$1&com$2 

這在大多數情況下,我對這個地方不適用某些特殊情況下,但是其中一個頁面需要通過大量的信息通過URL,我想自動重寫這個。一些例子:

website.com/asdf/jkl/id/5/page/2應該成爲website.com/index.php?mod=asdf&com=jkl&id=5&page=2

website.com/qwer/yuio/search/keyword/sort/alpha應該成爲website.com/index.php?mod=qwer&com=yuio&search=keyword&sort=alpha

這可能嗎?我真的可以在這裏使用一些幫助...謝謝! :)

回答

3

根據您使用的語言/框架,將重寫/分派放在腳本中可能比較簡單,而不是嘗試在mod_rewrite中執行所有操作。

例如,如果你使用PHP,給出的網址:

http://www.example.com/asdf.php/jkl/id/5/page/2 

在asf.php可以讀取PATH_INFO變量的腳本,將它在斜線和值寫入預期發生$ _REQUEST。

然後,你只需要一個簡單的重寫規則來隱藏'.php'。

0

你可以使用遞歸規則:

RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/?$ index.php?mod=$1&com$2 [L,QSA] 
RewriteRule ^([^/]+/[^/]+)/([^/]+)/([^/]+)/?(.*) $1/$4?$2=$3 [QSA] 

但它肯定會更容易解析與PHP請求路徑。

+0

嗯,你的例子似乎崩潰了我的apache:P儘管如此,遞歸的好主意。 – Aistina 2009-02-12 16:38:59

+0

我現在有這樣的:?重寫規則^成員/(.*)(/)?$ \t \t \t \t \t \t \t的index.php MOD =搜索&COM = showSearchResults/$ 1 [N] 重寫規則^的index.php([^ /]+)/([^/]+)/([^/]+)(/(.*))? index.php?$ 1&$ ​​2 = $ 3 $ 4 [QSA,N],雖然沒有工作..? :/ – Aistina 2009-02-12 16:40:13