gpt4 book ai didi

php - Slim 框架 - 无法用点解释路由

转载 作者:行者123 更新时间:2023-12-03 19:37:47 24 4
gpt4 key购买 nike

问题陈述

我目前正在开发一个内部 RESTful API,我使用我们的主域名作为环境标识符。但是,我注意到 Slim 根本不喜欢在其中包含点的路线。

示例案例

我有一个使用 PHP 内置网络服务器运行的本地网络服务器,我调用了 php -S 0.0.0.0:5000让它运行。

一旦 Web 服务器启动,我就会在索引页面上显示一个简单的“hello world”。一切正常,花花公子。

然后我设置了一条路线如下:

$app->get('/:domain/:id', function($domain, $id) 
{
echo $domain . ' ' . $id;
}

有了这个,我设置了希望解决 0.0.0.0:5000/apple.com/juicers 的路径。 .我试过 0.0.0.0:5000/apple/juicers页面打印出苹果榨汁机。但与 0.0.0.0:5000/apple.com/juicers ,我收到 404 Not Found 错误。

到目前为止我尝试过的

网址重写

我在 Google 和 Slim 框架的 Github 问题上查找了可用资源。好像有人遇到过类似的问题: https://github.com/codeguy/Slim/issues/359

那张票中提出的解决方案是: URL 重写修复 .我试过了,但无济于事。我设置了 .htaccess在我的项目目录的根目录,并打开 AllowOverRide All在我的 Mac 的 httpd.conf 文件中。

php -S 0.0.0.0:5000 index.php

而不是运行 php -S 0.0.0.0:5000就其本身而言,我在 index.php 上运行了该命令。此时,slim 框架没有抛出 Not Found 错误,而是解析到我的基本路由,我设置如下:
$app->get('/', function() { echo "hello world"; });

谢谢

我不知所措,任何帮助将不胜感激。非常感谢您的阅读!

最佳答案

slim 靠$_SERVER['SCRIPT_NAME']这应该是路由文件(Apache 的 DirectoryIndex ,以及 Rewrite 指向的文件。让我们说 index.php 对于下面的示例)。

在 PHP 嵌入式服务器中,如果 URI 在文件部分包含点,则 PHP 无法正确定位 SCRIPT_NAME 值。

您可以使用以下调整来模仿 RewriteRule行为:

创建一个 router.php文件并使用您的 PHP 嵌入式服务器通过它发送所有请求:

$_SERVER['SCRIPT_NAME'] = 'index.php';
include 'index.php';

然后,使用以下命令启动 PHP 嵌入式服务器:
php -S 0.0.0.0:<port> -t <your-Http-document-root> router.php
router.php文件将不会在您的生产环境中使用。只有 PHP 嵌入式服务器使用它,它应该可以解决您的“带点路由”问题。

关于php - Slim 框架 - 无法用点解释路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24336725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com