我试图让我的wampserver在友好网址(htaccess更改)下到达我的querystring vars。
我能得到的只是一个告诉我他们不存在的通知......
有什么问题?
我的rewrite_modulo已开启。默认情况下,如果我输入" http://localhost/product",wampserver会调用products.php。
但是我无法访问我的网址变种!
我的文件夹是"项目" (在www dir内)
- > WWW /项目
这是我得到的:
我的HTACCESS:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /project/
RewriteRule ^products/([a-z0-9-]+)/([0-9]+)/?$ /products.php?id=$2&name=$1 [NC]
</IfModule>
我的&#34; products.php&#34;是这样的:
<?php
$id = $_GET['id'];
$name = $_GET['name'];
?>
但是当我运行这个页面(http://localhost/products/myID/myName)时,我得到了这个通知:
- 注意:未定义的索引:第5行的C:\ wamp64 \ www \ project \ products.php中的id
- 注意:未定义的索引:第6行的C:\ wamp64 \ www \ project \ products.php中的名称
答案 0 :(得分:0)
将QSA(查询字符串追加)标记添加到规则中,例如:
RewriteRule ^products/([a-z0-9-]+)/([0-9]+)/?$ /products.php?id=$2&name=$1 [NC,QSA]
重要提示:逗号分隔的标记之间没有空格。
答案 1 :(得分:0)
您需要关闭MultiViews
选项:
Options -MultiViews
RewriteEngine on
RewriteBase /project/
RewriteRule ^products/([a-z0-9-]+)/([0-9]+)/?$ /products.php?id=$2&name=$1 [NC,L,QSA]
选项MultiViews
(请参阅http://httpd.apache.org/docs/2.4/content-negotiation.html)由Apache's content negotiation module
在 mod_rewrite
之前运行使用,并使Apache服务器匹配文件扩展名。因此,如果/file
是网址,那么Apache将提供/file.html
。