2009-02-12 85 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