【问题标题】:Despite adding QSA to mod_rewrite, $_GET still returning empty variable尽管将 QSA 添加到 mod_rewrite,$_GET 仍然返回空变量
【发布时间】:2013-02-04 03:09:05
【问题描述】:

2/1/13 更新:这个问题确实让我无法完成一些工作,所以如果其他人有任何建议,我们将不胜感激。

我正在尝试让domain.com/notalone/viewpost/5/ 充当domain.com/notalone/viewpost.php?id=5

我当前的 .htaccess 是这样的:

RewriteEngine On

RewriteRule ^notalone/viewpost/([0-9]+)/?$ /viewpost.php?id=$1 [QSA]

目前,当您访问/notalone/viewpost/5/ 时页面正常加载,但它没有通过$_GET['id']

我尝试过的事情

  • 添加Options -Multiviews ---> 导致 404
  • 使用Rewritebase / ---> 没有效果
  • RewriteRule ^viewpost/([0-9]+)/?$ /viewpost.php?id=$1 [QSA] ---> 没有效果

【问题讨论】:

  • 我应该补充一下,重写代码运行良好!似乎给我带来问题的只是空变量。
  • 在脚本顶部添加这个以显示所有服务器变量:<?php echo var_dump($_SERVER) . "<br /><br />"; ?>
  • 完成了,但我到底在寻找什么?可能是这个? ["QUERY_STRING"]=> string(0) ""
  • REQUEST_URI 应该是 /viewpost/5/。这就是您要与正则表达式匹配的内容。
  • ["REQUEST_URI"]=> string(21) "/notalone/viewpost/5/"

标签: mod-rewrite get


【解决方案1】:

您说viewpost.php 在 notalone 文件夹中,但您 htaccess 假定它在根目录中。

所以我认为应该是:

Options -MultiViews
RewriteRule ^notalone/viewpost/([0-9]+)/?$ /notalone/viewpost.php?id=$1 [QSA]

(请注意,我添加了多视图,因为这将是您的下一个问题。旧网址有效的事实是因为多视图。)

【讨论】:

  • 我已经发现了问题所在,正如您所说,问题是目录混淆!全部完成后,我将整个网站移到了自己的主机上,果然,我这样做后问题就消失了!谢谢!
  • 很高兴您找到了解决方案。祝你有美好的一天。
猜你喜欢
  • 2010-12-02
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多