0

我的问题很简单,但我似乎找不到答案。我目前正在为网站进行一些 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

这可能吗?我真的可以在这里使用一些帮助...谢谢!:)

4

2 回答 2

3

根据您使用的语言/框架,将重写/调度放在脚本中可能比尝试在 mod_rewrite 中执行所有操作更简单。

例如,如果您使用的是 PHP,给定 URL:

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

asf.php 中的脚本可以读取 PATH_INFO 变量,将其拆分为斜线,并将值写入 $_REQUEST 中的预期位置。

那么你所需要的只是一个简单的重写规则来删除'.php'。

于 2009-02-12T16:50:22.810 回答
0

您可以使用递归规则:

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

但是用 PHP 解析请求路径肯定会更容易。

于 2009-02-12T15:59:49.310 回答