You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Slim Framework V2.6.3如何定义匹配特定前缀的单一路由?

在Slim Framework V2.6.3中捕获特定开头的路由

完全可以实现,Slim V2支持用正则表达式定义路由,刚好能满足你捕获所有以apple-touch-icon开头路径的需求。

实现方法

直接定义带正则匹配的路由,让它匹配所有符合前缀规则的请求路径:

<?php
require 'vendor/autoload.php';

$app = new Slim\Slim();

// 匹配所有以/apple-touch-icon开头的路径
$app->get('/apple-touch-icon.*', function () use ($app) {
    // 获取当前请求的完整路径
    $requestPath = $app->request->getPath();
    
    // 这里写你的处理逻辑,比如返回对应的图标文件
    $app->response->setStatus(200);
    $app->response->setHeader('Content-Type', 'image/png');
    // 假设图标文件存放在public目录下,读取并输出
    $filePath = realpath(__DIR__ . '/public' . $requestPath);
    if ($filePath && file_exists($filePath)) {
        readfile($filePath);
    } else {
        $app->response->setStatus(404);
        echo 'Icon not found';
    }
});

$app->run();

更精确的匹配(可选)

如果只想匹配.png后缀的图标路径,可以把路由规则改成更严格的正则:

$app->get('/apple-touch-icon(?:-.+)?\.png', function () use ($app) {
    // 处理逻辑同上
});

这个规则会精准匹配你给出的所有例子:

  • /apple-touch-icon.png
  • /apple-touch-icon-precomposed.png
  • /apple-touch-icon-57x57.png

注意事项

Slim V2的路由按定义顺序匹配,如果你还有其他更具体的路由(比如单独某个图标路径的特殊处理),要把这个通用路由放在那些具体路由的后面,避免提前匹配导致具体路由失效。

内容的提问来源于stack exchange,提问作者Fernando

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:45:45