可以';我无法从我的友好url规则(HTACCESS)中找到值


Can't find values from my friendly url rules (HTACCESS)

我正试图让我的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提供服务。