自动重写GET变量

时间:2013-07-21 19:24:26

标签: php apache mod-rewrite get url-routing

这可能是在某个地方之前提出来的。但是,经过相当长的一段时间,我无法弄清楚这一点。

我正在为我的php网站创建一个小型路由引擎。我希望能够使其尽可能具有动态性和灵活性。现在,我在内部将所有URL都转到我的路由器文件,并解析正确页面的URL。

我希望能够自动将所有GET参数转换为某种预定义格式。我想知道这是否可能:

自:     example.com/page.php?param=val&param=val ...

要:

example.com/page/param/val/param/val...

关键是我不想硬编码匹配。理想情况下,我不需要知道有多少GET汽车或它们是什么,而是自动将任何转换为​​如上所述的预定义格式。然后将URI传递到我的路由器,然后根据需要解析它。此外,页面的路径可以是几个“子目录”,例如

example.com/account/register.php?action=something

example.com/account/register/action/something

TLDR

* mod_rewrite可以自动将所有GET参数转换为某种预定义格式,如page / param / val / param / val或page / param:val / param:val?*

更新

澄清我的问题/我理解如何使用正则表达式以及不匹配url的内容。我的问题是我是否可以设置一些规则,将查询字符串转换为预定义的格式,而无需事先知道有多少参数或它们的页面。

2 个答案:

答案 0 :(得分:0)

看到类似的问题,以获得有关如何使用正则表达式的灵感:

Mod_Rewrite wildcard's / appending

答案 1 :(得分:0)

除了使用mod_rewrite之外,你可以遍历index.php中的$ _GET数组,并执行以下操作:

$url = '';
foreach($_GET as $key => $value) {
   $url .= $key . '/' . $value . '/';
}


header ("Location: http://www.mysite.com/" . $url);