如何在PHP的URL中的'@'选择符之后获取所有内容

时间:2019-04-03 08:23:40

标签: php

我正在用PHP编码CDN,到目前为止,它可以工作,但是我想通过在其后面添加一个'@'来选择不同的版本。如何在“ @”之后获取版本String。 示例:https://cdn.steven2105.de/jquery@3.3.0

<?php
$error = false;

$path = str_replace("/", "", $_SERVER['REQUEST_URI']);

switch($path) {
    case "jquery":
        $toOpen = "jquery/3.3.1/jquery.min.js";
        break;
    case "jquery@3.3.0":
        $toOpen = "jquery/3.3.0/jquery.min.js";
        break;
    case "vue":
        $toOpen = "vue/2.6.10/vue.min.js";
        break;
    case "bootstrap-css":
        $toOpen = "bootstrap/4.3.1/bootstrap.min.css";
        break;
    case "bootstrap-js":
        $toOpen = "bootstrap/4.3.1/bootstrap.min.js";
        break;
    case "baguettebox-css":
        $toOpen = "baguettebox/1.11.0/baguettebox.min.css";
        break;
    case "baguettebox-js":
        $toOpen = "baguettebox/1.11.0/baguettebox.min.js";
        break;
    case "popper":
        $toOpen = "popper/1.14.7/popper.min.js";
        break;
    default:
        $error = true;
        break;
}

if (!$error) { 
    header("Location: https://cdn.steven2105.de/libs/$toOpen");
} else {
    include_once "website.php";
}

编辑:我现在应该怎么办?它不起作用。

我在路径https://cdn.steven2105.de/libs/中有不同的库,例如https://cdn.steven2105.de/libs/jquery中包含诸如https://cdn.steven2105.de/libs/jquery/3.3.1/jquery.min.js之类的文件。我想使用较短的前缀(如https://cdn.steven2105.de/jquery@3.3.1)访问这些链接。如果我使用'@'字符,则应将其重定向到目录https://cdn.steven2105.de/libs/jquery/中的版本,如果没有使用'@',则应将其重定向到最新版本。

最简单的方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用explode函数。输出为数组并获取。

<?php

$URL = ' https://cdn.steven2105.de/jquery@3.3.0';
$Result = explode('@', $URL);
echo("<pre>");print_r($Result[1]);

?>

答案 1 :(得分:0)

您可能可以使用Web服务器配置来解决此问题,而不是使用PHP。

Apache(https://httpd.apache.org/docs/2.4/rewrite/remapping.html)中的重写规则应该可以解决问题。我希望Nginx提供类似的功能。

如果您使用Apache或Nginx为您执行此操作,它将更快,因为您无需运行PHP脚本。