0

这可能以前在某个地方被问过。但是,在搜索了一段时间后,我无法弄清楚这一点。

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

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

来自:example.com/page.php?param=val¶m=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 的内容。我的问题是我是否可以设置一些规则,将查询字符串转换为预定义格式,而无需事先知道有多少参数或它们用于哪个页面。

4

2 回答 2

0

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

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


header ("Location: http://www.mysite.com/" . $url);
于 2013-07-21T20:03:09.720 回答
0

有关如何使用正则表达式的灵感,请参见类似问题:

Mod_Rewrite 通配符的 / 附加

于 2013-07-21T19:35:54.470 回答