【问题标题】:API configure parameters in urlurl中的API配置参数
【发布时间】:2021-08-11 09:55:31
【问题描述】:

我创建了一个 API,我通过一个特定的 url 获取我的所有数据,并通过 'id' 像这样:

'myfolder.php/1'

所以现在我尝试用字符串获取我的网址:

myfolder.php/mystring 

在 id 的 Htacess 中,我这样做:

RewriteRule ^[^/]+/(\d+)$ myfolder.php?id=$1

但我没有找到适合我尝试过的字符的正则表达式:

RewriteRule ^[^/]+/([a-z]+)$ myfolder.php?string

编辑: 如果我调用 url 'myurl.com',我的函数 getProducts 会被调用。 如果我打电话给'myurl.com/1',则会调用 getProduct($id) 但是如果我调用'myurl.com/string',$_GET 是空的,并且调用 getProducts。

   switch($request_method) {

        case 'GET':
            // HERE $_GET is empty if i called a string
            if(!empty($_GET["id"])) {
                $id= $_GET["id"];
                getProduct($id);
            }
            else {
                getProducts();
            }
            break;
        default:
            header("HTTP/1.0 405 Method Not Allowed");
            break;
    }

【问题讨论】:

  • 那么问题出在哪里?
  • 能否请您提及您要重写的示例 URL?
  • 问题是我的 rewriteRule 对于字符串是错误的。我有看主题并尝试像这样 RewriteRule ^[^/]+/^[A-Za-z]+$ myfolder.php?sign=i 但这也不起作用。
  • 对于网址:myurl.com/mystring,我想要类似的东西

标签: .htaccess mod-rewrite url-rewriting friendly-url


【解决方案1】:

使用您展示的示例,请尝试以下操作。请确保在测试您的 URL 之前清除您的浏览器缓存。还要确保您的 php 文件位于保存 htaccess 规则文件的同一文件夹中。

##Enabling RewriteEngine here.
RewriteEngine ON
##Placing conditions for non-existing requests with rewriterule to php file.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$  myfolder.php/$1 [NC,QSA,L]

【讨论】:

  • 我刚试过这个,但总是不起作用。我之前已经清除了浏览器缓存
  • @Ygg69,你能告诉我你正在点击的示例/示例网址吗?当你点击它时,你得到的错误是什么?
  • @Ygg69,尝试将最后一条规则更改为RewriteRule ^(.*)/?$ myfolder.php/$1 [NC,QSA,L] 一次,然后再试一次?测试前请务必清除浏览器缓存。
  • 试试这个,我的 $_GET 总是返回一个空数组
  • 没关系,问题是我没有删除 id 的重写规则......你的重写工作正常 :) 谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-24
  • 2020-05-03
  • 1970-01-01
相关资源
最近更新 更多