我的问题很简单,但我似乎无法找到答案。我目前正在为网站进行一些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
这可能吗?我真的可以在这里使用一些帮助......谢谢! :)
答案 0 :(得分:3)
根据您使用的语言/框架,将重写/分发放在脚本中而不是尝试在mod_rewrite中执行所有操作可能更简单。
例如,如果您使用PHP,则给定URL:
http://www.example.com/asdf.php/jkl/id/5/page/2
然后你只需要一个简单的重写规则来消除'.php'。
答案 1 :(得分:0)
您可以使用递归规则:
RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/?$ index.php?mod=$1&com$2 [L,QSA]
RewriteRule ^([^/]+/[^/]+)/([^/]+)/([^/]+)/?(.*) $1/$4?$2=$3 [QSA]
但使用PHP解析请求路径肯定会更容易。