【发布时间】: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