【问题标题】:GET parameter becomes the page name after rewriteGET参数改写后变成页面名
【发布时间】:2013-08-05 08:58:42
【问题描述】:

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

/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"] 。

基本上我有一个叫做

的 URL

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/。

谢谢,

【问题讨论】:

  • $_GET and URL Rewriting for PHP 的可能重复项
  • 您能否详细说明“我正在重写 php 应用程序中的 URL。”你是通过PHP重定向吗?如果是,您是否附加了id 以及/xbox/?platform_id=1

标签: .htaccess mod-rewrite url-rewriting


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 卢锡安,这就是你要找的吗?
猜你喜欢
  • 2021-06-29
  • 2011-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多