2013-07-21 78 views
0

这可能在某处出现过。但是,经过一段时间的搜索后,我无法弄清楚。自动重写GET变量

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

我希望能够自动将所有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参数到像一些预定义的格式页/参数/ VAL/PARAM/VAL或页/参数:VAL /参数:VAL *

UPDATE

为了澄清我的问题/我明白,我怎么可以使用常规的前压力和不匹配网址的内容。我的问题是,我是否可以设置一些规则,将查询字符串转换为预定义的格式,而不必知道它们之前有多少个参数或哪些页面。

+0

肯定的 - 你可以使用'RewriteRule'指令 –

回答

0

使用mod_rewrite之外,你可以通过$ _GET数组中的index.php的循环,这样做:

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


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

这就是我正在寻找的,但如果可能的话直接使用mod_rewrite? – Ishikawa

0

看到类似的问题的灵感如何使用正则表达式:

Mod_Rewrite wildcard's/appending

+0

正则表达式,我得到的正则表达式,但我想知道我怎么能做到这一点不知道有多少GET瓦尔有?您已链接的问题将一些预定义的值附加到匹配网址的末尾。我基本上想要它重写查询字符串到不同的格式(不知道查询字符串中的参数数量) – Ishikawa

+0

重写任意数量的瓦尔斯看到这个:http://stackoverflow.com/questions/2122022/mod-用未知数重写变量 –