我有一个看起来像的网址:
/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 /。
谢谢,
答案 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']