.htaccess不允许$ _GET工作

时间:2018-05-27 05:32:46

标签: php .htaccess

我的.htaccess文件目前是:

RewriteEngine on
RewriteRule ^display/([0-9]+) display.php?id=$1

但是,在我尝试访问$_GET['id']的值时,在display.php中,PHP表示没有值。

目前display.php?id=1工作正常但display/1无法正常工作。我还试图了解display/id=1display.php/1是否有效,但没有。

我是.htaccess的新手,所以我不知道自己做错了什么。请提前帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

你只需要添加“QueryString Append”选项,它:

 RewriteRule ^display/([0-9]+) display.php?id=$1 [QSA,L]

如果不起作用,请尝试:

 RewriteEngine on
 Options -MultiViews
 RewriteRule ^display/([0-9]+) display.php?id=$1 [L]

仅供参考:

QSA标志表示在重写URI后附加现有查询字符串。例如:

URL = http://example.com/foo/bar?q=blah

规则:

RewriteRule ^foo/(.*)$ /index.php?b=$1

结果= /index.php?b=bar

注意q=blah是如何消失的。因为现有的查询字符串被删除而有利于规则目标中的那个(b = $ 1)。现在,如果您包含QSA标志:

RewriteRule ^foo/(.*)$ /index.php?b=$1 [QSA]

结果变为= /index.php?b=bar&q=blah

.htaccess标志列表

  • C(与下一条规则相关联)
  • CO = cookie(设置指定的cookie)
  • E = var:value(将环境变量var设置为值)
  • F(禁止 - 向用户发送403标头)
  • G(已经 - 不再存在)
  • H =处理程序(设置处理程序)
  • L(最后停止处理规则)
  

上一个规则:指示服务器在处理完前一个指令后停止重写。

  • N(下一步 - 继续处理规则)
  • NC(不区分大小写)
  • NE(不要在输出中转义特殊的URL字符)
  • NS(如果请求是子请求,则忽略此规则)
  • P(代理 - 即,apache应该获取替换部分中指定的远程内容并将其返回)
  • PT(传递 - 在处理带有其他处理程序的URL时使用,例如mod_alias)
  • R(临时重定向到新网址)
  • R = 301(永久重定向到新网址)
  • QSA(将请求中的查询字符串附加到替换的URL)
  • S = x(跳过下一个x规则)
  • T = mime-type(强制指定的mime类型)

有关详细信息,请查看RewriteRule Flags