在 wamp 中使用 rewriteRule 时未定义的索引

Undefined index when using rewriteRule in wamp

我有新项目,我正在使用 htaccess 重写 URL。我确定我的代码没有任何问题,因为我今天在 xamp 和 000webhost 上测试了它,并且它没有任何问题。

但是,当我在 wampServer 中测试相同的脚本时,$_GET 无法在 PHP 页面上运行,我在其中收到此错误:

output is Notice: Undefined index: key in D:\wamp64\www\cp\examples.php on line 5

问题出在 wampServer 服务器上。也许有什么我应该改变的,但我不知道问题到底出在哪里。

注意:我从 wampServer apache 模块启用了 rewrite_module

htaccess 代码:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /cp/
RewriteRule ^examples.html$ examples.php //it's working
RewriteRule ^examples/([a-zA-Z0-9]+)?$ examples.php?key=

htaccess 的第五行在使用时无法使用 PHP:

echo $_GET['key']; //output is Notice: Undefined index: key in D:\wamp64\www\cp\examples.php on line 5

在您的代码中添加 -MultiViews 选项

什么是多视图
MultiViews 搜索是服务器进行隐式文件名模式匹配并从结果中进行选择的地方。

例如,如果您在根文件夹中有一个名为 configuration.php(或其他扩展名)的文件,并且您在 htaccess 中为一个名为 configuration/ 的虚拟文件夹设置了一个规则,那么您就会遇到问题使用您的规则,因为服务器会自动选择 configuration.php (如果启用了 MultiViews,大多数情况下都是这种情况) 如果你想禁用该行为,你只需在你的 htaccess 选项中添加它 -MultiViews

演示示例:

将此代码用于 .htaccess 文件

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /cp/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^examples/(.+?)/?$ /cp/examples.php?key= [L,QSA]

你examples.php代码将是

<?php 
echo $_REQUEST['key'];  
?>

然后打电话 http://localhost/cp/examples/27

输出将是:27