GET参数成为重写后的页面名称

时间:2013-08-04 23:00:49

标签: .htaccess mod-rewrite url-rewriting

我有一个看起来像的网址:

/platforms.php?platform_id=xxx

其中xxx是一个数字

我正在重写php应用程序中的URL。所以,例如上面的url看起来像:

/xbox/ or /playstation/

现在.htaccess我有:

RewriteRule ^([^/]+)/$ platforms.php?platform_id=$1 [L,QSA]

但是当我转到平台页面时,GET网址变为/xbox/ or /playstation/,而不是xxx

任何指针都会受到赞赏。

更新

嗨,这个链接与我的问题无关。我试着用更好的细节重新描述我所追求的内容。

感谢您的回答,对不起的解释感到抱歉。

是的,当我说GET url时我指的是$ _GET [“platform_id”]。

基本上我有一个名为

的网址

www.example.com/platforms.php?platform_id=1

在上面的示例中,$ _GET ['platform_id'] = 1。

在实际的php应用程序中我有一个函数(让我们称之为make_link),我用它来制作上面的URL输出:

www.example.com/xbox/(因为1是xbox平台的ID)

现在在httaccess中我还需要一个重写规则来访问URL。

所以我有:

RewriteRule ^([^ /] +)/ $ platforms.php?platform_id = $ 1 [L,QSA]

这确实使重写工作符合我可以访问的条款

www.example.com/xbox /

但是在新访问的页面上,如果我得到$ _GET ['platform_id'],它的值是xbox /。

谢谢,

1 个答案:

答案 0 :(得分:0)

在RewriteRule中,$1是一个反向引用第一个正则表达式的变量(在您的情况下:([^/]+))。

因此,无论文本形式如何,您的网址部分都将存储在$1中。

如果您想使用控制台的ID,则必须将这些ID作为网址的一部分。如果您不想这样,但如果您希望漂亮的URL反映控制台的名称,则必须在.htaccess文件中重写platforms.php?platform_id=$1的查询部分。

您不必查询ID(?platform_id=$1),而是查询控制台的名称,例如: ?platform_name=$1

修改
在PHP文件中,然后使用$_GET['platform_name']