【问题标题】:AppServ mod-rewrite does not recognize $ _GET vars [duplicate]AppServ mod-rewrite 无法识别 $ _GET vars [重复]
【发布时间】:2017-07-02 02:50:51
【问题描述】:

最近我在一台新电脑上安装了 AppServ。

和往常一样,我在配置 .htaccess 文件之前开始使用 PHP 开发脚本

情况是这样的:


.htaccess

RewriteEngine On

RewriteRule ^step/token/([a-zA-Z0-9_-]+)/?$   step.php?load=page&page=reset-token&token=$1   [L,QSA]


step.php

print_r($_GET)


测试 #1

如果我加载 URL

http://localhost/mod-rewrite/step.php?load=page&page=reset-token&token=123

这是输出:

Array ( [load] => page [page] => reset-token [token] => 123 )


测试#2

如果我加载所需格式的 URL

http://localhost/mod-rewite/step/token/123/

问题

Array ( )


C:\AppServ\Apache2.2\conf\httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so 不以#开头

AllowOverride 就是全部

<directory />
    Options FollowSymLinks
    AllowOverride All
    order deny,allow
    Deny from all
</directory>


会发生什么?

【问题讨论】:

  • 测试#2 的输出实际上来自您的step.php 文件吗?
  • 是的,step.php 是该目录中唯一的 php 文件
  • 您还有其他重定向吗?您可能还需要disable MultiViews
  • 如果我在 .htaccess 中添加 Options -MultiViews,那么 step.php 就不再加载了,在这种情况下 index.php 是加载
  • 好的,这就是进步。这意味着您的重写规则没有正确匹配。您的.htaccess 文件是否与step.php 一起在mod-rewrite 目录中?

标签: php .htaccess mod-rewrite


【解决方案1】:

解决办法是放在.htaccess "Options -MultiViews"开头

然后重启服务

感谢@Phil

【讨论】:

  • 很高兴你把它整理好了。
猜你喜欢
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 2014-09-26
  • 2022-10-23
  • 2010-12-26
相关资源
最近更新 更多