在 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
我有新项目,我正在使用 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