【问题标题】:PHP: $_GET[''] superglobal does not fetch the value from URL after Cleaning the URL with .htaccessPHP:$_GET[''] superglobal 在使用 .htaccess 清理 URL 后不会从 URL 中获取值
【发布时间】:2018-10-10 00:17:21
【问题描述】:

我对 $_GET[''] 有疑问。 在对 URL 应用 .htaccess 规则之前,一切正常,当我使用 .htaccess 文件清理 URL 时,现在 echo $_GET['id'] 给了我这个错误 (注意:未定义的索引:C:\ 中的 id wamp64\www\Test\show.php 在第 3 行)。新的干净 URL 可以在没有参数的情况下正常工作,但是当我尝试发送参数时它不会发送 id。 我不知道该怎么办。我已经搜索了这个问题超过 10 个小时,但没有结果。

我的 .htaccess 文件内容:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^show/([0-9]+)/([0-9a-zA-Z_-]+) show.php?id=$1&name=$2 [NC,L]

我想显示来自 URL 的值的 show.php 页面

<?php
$myvar = $_GET['id']."<br>";
$myvar1 = $_GET['name'];
echo $myvar;
echo $myvar1;
?>

此网址没有问题 (http://localhost/Test/show.php?id=120&name=ahmad)

**但是在这个 url (http://localhost/Test/show/120/ahmad) 中发生了这个错误**

注意:未定义的索引:第 3 行 C:\wamp64\www\Test\show.php 中的 id 注意:未定义索引:第 4 行 C:\wamp64\www\Test\show.php 中的名称

我已将 httpd.conf 文件中的 mod_rewrite.os 注释掉。

请帮帮我,谢谢。

【问题讨论】:

  • $_GET['name'] 怎么样,你能从 url "localhost/Test/show/120/ahmad" 得到它吗??
  • 不,我不能得到他们两个也不能得到 id 和 name
  • 也许 MultiViews 在您的 apache 服务器上启用。尝试将Options -MultiViews 行添加到您的 htaccess,然后再次测试 url

标签: php .htaccess get


【解决方案1】:

改变你的 RewriteCond:

RewriteCond %{REQUEST_FILENAME} -f

RewriteCond %{REQUEST_FILENAME} !-f

第二个表示如果路径不是服务器上的文件,那么这就是您想要的。我猜第一个意味着只有当路径是文件时。

【讨论】:

  • 它仍然无法正常工作。如果可行,我将尝试在我的 PC 中安装另一台服务器。谢谢你(;
  • 看来我的 Wamp 服务器有问题,因为我安装了 xampp,它可以正常工作,谢谢 :)
猜你喜欢
  • 1970-01-01
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-22
  • 2012-03-27
  • 2015-10-08
  • 1970-01-01
相关资源
最近更新 更多