我正在用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/中的版本,如果没有使用'@',则应将其重定向到最新版本。
最简单的方法是什么?
答案 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脚本。