无法从我的友好网址规则(HTACCESS)

时间:2016-08-21 08:24:18

标签: php apache .htaccess mod-rewrite

我试图让我的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中的名称
  •   

2 个答案:

答案 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 modulemod_rewrite之前运行使用,并使Apache服务器匹配文件扩展名。因此,如果/file是网址,那么Apache将提供/file.html