【问题标题】:$_GET returns nothing$_GET 不返回任何内容
【发布时间】:2018-03-29 10:09:57
【问题描述】:

我正在尝试第一次使用 php 构建路由。

我想要这样的链接:

http://localhost/controller/action

这是我的 .htaccess 文件:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([a-zA-Z]*)/?([a-zA-Z]*)?/?([a-zA-Z0-9]*)?/?$ index.php?controller=$1&action=$2&id=$3 [NC,L]

我想访问 $_GET['controller']$_GET['action'] 但它给出了 - 未定义的索引错误。

var_dump($_GET) 返回

数组(大小=0) 空的

【问题讨论】:

  • 您是否尝试过禁止空组?例如。 ([a-zA-Z]+) 而不是 ([a-zA-Z]*)?
  • 我刚刚试了一下。还是有同样的问题。
  • 也许你应该关闭 MultiViews 选项,看看这个stackoverflow.com/questions/49410365/…
  • 我把它关掉了。还是有同样的问题
  • @ÁlvaroGonzález 粘贴您的添加方式

标签: php .htaccess url-routing


【解决方案1】:

问题是,您的正则表达式不那么严格,并且斜杠(但不是最后一个)不能是正常运行的可选。你也应该避开斜线。

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([a-zA-Z]+)\/([a-zA-Z]+)\/([a-zA-Z0-9]+)\/?$ index.php?controller=$1&action=$2&id=$3 [NC,L]

【讨论】:

  • 试试你的 yoururl.com/aaa/bbb/ccc 并告诉我你用 print_r() 得到了什么
  • 我收到此错误:404 Not Found The requested URL /aaa/bbb/ccc was not found on this server.
  • 试试 ^(.*)$ index.php?var=$1 告诉我结果
  • 返回:404 Not Found for localhost/aaa
  • 是否安装了 mod rewrite?
猜你喜欢
  • 2020-04-27
  • 2019-04-06
  • 2012-02-15
  • 2020-09-07
  • 2021-11-22
  • 2015-11-06
  • 2013-11-14
  • 2014-03-23
  • 2012-08-25
相关资源
最近更新 更多