0

我有一个如下所示的网址:

/platforms.php?platform_id=xxx

xxx数字在哪里

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

/xbox/ or /playstation/

现在在 .htaccess 我有:

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

但是,当我转到平台页面时,GET url 变为/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 起作用。

所以我有 :

重写规则 ^([^/]+)/$platforms.php?platform_id=$1 [L,QSA]

这确实使重写工作按照我可以访问的条款进行

www.example.com/xbox/

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

谢谢,

4

1 回答 1

0

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

因此,构成 URL 部分的任何文本都将存储在$1.

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

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

编辑:
在您的 PHP 文件中,您将使用$_GET['platform_name']

于 2013-08-05T00:52:02.910 回答