【问题标题】:mod_rewrite / query_stringmod_rewrite / query_string
【发布时间】:2011-02-18 14:07:58
【问题描述】:

我从 mysql 数据库中获得了一些基本结果并将其列在一个页面上,在该页面上我添加了带有变量 user_id 的链接:

href=\"http://localhost/TESTING/template.php?user_id=$user_id\" >click here

在 template.php 文件中,我将获取 $user_id 并显示相关的完整数据。

问题是我不希望 user_id=249 http://localhost/TESTING/template.php?**user_id=**249 显示在我想要“http://localhost/TESTING/template.php/249”之类的网址中。

我已经研究了几天没有成功,这可能吗?或者模板文件是否需要显示 user_id=$user_id 才能获取变量?

======================

更新:我添加了代码

重写引擎开启

RewriteBase /TESTING/

RewriteRule ^template.php/([0-9]+)(/)?$ template.php?user_id=$1 [L]

将链接变量更改为 href="localhost/TESTING/template.php/{$user_id}" >点击这里

重写现在有效,但我没有得到 $user_id = $_GET["user_id"]; 的变量在 template.php 页面上

我将以下内容添加到 template.php 页面以查看通过 url 传递的内容:

<?php
ini_set('display_errors',1);
echo '<b>$_GET Variables</b><pre>';
var_dump( $_GET );
echo '</pre>';
?> 

并得到以下响应:

$_GET 变量

数组(1){ ["user_id"]=> 字符串(2)“21” }

如何获取变量?

============

现在更新有效!链接中的 {$user_id} 不是 {user_id} - 我可以发誓我尝试了两种方式。

【问题讨论】:

  • 也让我们知道什么服务器/设置,即 windows/unix

标签: php mod-rewrite query-string


【解决方案1】:

请注意,mod_rewrite 仅适用于 Apache 服务器。

RewriteEngine On

RewriteBase /TESTING/

RewriteRule ^template.php/([0-9]+)(/)?$ template.php?user_id=$1 [L]

【讨论】:

  • 这看起来像是我一直在努力工作的东西,但这仍然显示网址为:localhost/TESTING/template.php?user_id=249
  • 我正在运行 xampp btw 并检查是否启用了 mod_rewrite。
  • 我认为您不了解 mod_rewrite 的工作原理。它不会重写您输出的 URL,它只会将接收到的 URL 请求重写为另一个 URL。
  • 当你链接到页面时,不要使用 href="localhost/TESTING/template.php?user_id=$user_id" >点击这里....使用:href="localhost/TESTING/template.php/{$user_id}" >点击这里
  • 感谢 radu,现在到达某个地方,它显示带有新 url 但没有任何变量的页面,所以我在模板页面上的 mysql_query 没有找到 {user_id} 变量。这就是我使用的: $user_id = $_GET["user_id"];
【解决方案2】:

我不想失礼,但是互联网上有很多手册,例如

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

它通过示例解释了您需要的一切。你试过什么了?所以我们可以解释什么是错的。

【讨论】:

  • 好吧,例如 radu 的帖子与我一直在尝试的类似,但没有运气。
猜你喜欢
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 1970-01-01
  • 2012-07-17
  • 2016-09-09
  • 2011-11-06
相关资源
最近更新 更多