这可能是在某个地方之前提出来的。但是,经过相当长的一段时间,我无法弄清楚这一点。
我正在为我的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的内容。我的问题是我是否可以设置一些规则,将查询字符串转换为预定义的格式,而无需事先知道有多少参数或它们的页面。
答案 0 :(得分:0)
看到类似的问题,以获得有关如何使用正则表达式的灵感:
答案 1 :(得分:0)
除了使用mod_rewrite之外,你可以遍历index.php中的$ _GET数组,并执行以下操作:
$url = '';
foreach($_GET as $key => $value) {
$url .= $key . '/' . $value . '/';
}
header ("Location: http://www.mysite.com/" . $url);