mod_rewrite用于任意数量的变量

时间:2009-06-04 03:50:19

标签: apache mod-rewrite url-rewriting

我是mod_rewrite的新手,我想知道你是否有办法在重写脚本上处理你输入的变量和数量。

例:

www.krisnicolaou.com/index.php?id=5&sort=asc&limit=25&param=first_name



www.krisnicolaou.com/5/asc/25/first_name

...但是,你也可以在另一个页面上传递这些变量,它可以用于那个脚本:

www.krisnicolaou.com/index.php?page=view&action=add



www.krisnicolaou.com/view/add/

我基本上不希望限制我可以在最后添加多少参数而不必不断修改.htaccess文件。

提前致谢。

2 个答案:

答案 0 :(得分:1)

类似于this

答案 1 :(得分:1)

通常一个人想要“干净”的网址,并将它们转换为参数。你要求的是相反的。这是一个测试规则集。

RewriteEngine on

RewriteCond %{QUERY_STRING} !^$
RewriteCond %{QUERY_STRING} ^([^=]*)=([^&]*)(&.*)?
RewriteRule ^(.*/)?([^/]+) $1%2/$2?%3 [L]

如果有参数,这将运行,并且对于每个参数,它将把它添加到URL并从参数列表中删除它。 [N]将导致它运行,直到没有更多参数。

为了测试,我创建了以下结构:

view
view/add
view/add/index.htm

我将上述规则放在.htaccess文件中。

正常测试: http://www.theeggeadventure.com/2009/index.htm?page=view&action=add

其他参数(404)测试 http://www.theeggeadventure.com/2009/index.htm?page=view&action=add&foo=bar 在此服务器上找不到URL /2009/view/add/bar/index.htm。