我正试图让我的wampserver在友好的url下访问我的查询字符串vars(htaccess更改(。
我所能得到的只是一张通知,告诉我它们不存在。。。
怎么了?
我的rewrite_modulo为ON。默认情况下,如果我键入"http://localhost/product".
但是我无法访问我的url vars!
我的文件夹是"项目"(在www目录内(
->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>
我的"products.php"是这样的:
<?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中的未定义索引:名称
将QSA(查询字符串附加(标志添加到规则中,如:
RewriteRule ^products/([a-z0-9-]+)/([0-9]+)/?$ /products.php?id=$2&name=$1 [NC,QSA]
重要提示:逗号分隔的标志之间没有空格。
您需要关闭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)由在mod_rewrite
之前运行的Apache's content negotiation module
使用,并使Apache服务器匹配文件的扩展名。因此,如果/file
是URL,那么Apache将为/file.html
提供服务。