请求方法GETS零值

时间:2017-11-02 11:43:03

标签: php .htaccess curl

您好我正在尝试从我的localhost请求URL时获取请求方法。我已完成URL重写,因此http://localhost/API2/products.php?product_id=1变为http://localhost/API2/products.php/products/1 $ request_method = $ _ SERVER [" REQUEST_METHOD"];应该把GET作为方法。但它每次都变为零。

my.htaccess文件包含以下网址规则:

      RewriteEngine On # Turn on the rewriting engine
      RewriteRule ^products/?$ products.php [NC,L]
      RewriteRule ^products/([0-9]+)/?$ products.php?product_id=$1 [NC,L]

我在Learn.php中的curl命令是:

   <?php
    $url = 'http://localhost/API2/products';
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HTTPGET, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response_json = curl_exec($ch);
    curl_close($ch);
    $response=json_decode($response_json, true);

   ?>

所以当我运行我的curl命令时,这是一个Learn.php,它既没有呈现任何数据,因为$ request_method = $ _ SERVER [&#34; REQUEST_METHOD&#34;]请求方法保持零值。

1 个答案:

答案 0 :(得分:0)

添加它以禁用MultiViews:

Options -MultiViews

Apache docs on mod_negotiation描述了多视图选项启用时的功能:

  

如果   服务器接收/ some / dir / foo的请求和/ some / dir / foo没有   存在,然后服务器读取目录查找所有命名的文件   foo。*,并有效地伪造了一个类型地图,列出了所有这些   文件,为它们分配相同的媒体类型和内容编码   如果客户通过名字要求其中一个,那就会有。然后呢   选择与客户要求的最佳匹配,并返回   文档。

使用:

# disable products -> products.php
Options -MultiViews
# Turn on the rewriting engine
RewriteEngine On
RewriteRule ^products/?$ products.php [NC,L]
RewriteRule ^products/([0-9]+)/?$ products.php?product_id=$1 [NC,L]