如何在php中的url中的'@' - 选择器之后获取所有内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在php中的url中的'@' - 选择器之后获取所有内容相关的知识,希望对你有一定的参考价值。
我用php编写了一个CDN,它的工作原理很远,但是我想通过添加一个带有它的版本的'@'来选择不同的版本。如何在'@'之后获取版本字符串。示例: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/中的版本,如果没有'@',它应该重定向到最新版本。
什么是最简单的方法?
你可以使用explode
函数。它输出为数组并获取它。
<?php
$URL = ' https://cdn.steven2105.de/jquery@3.3.0';
$Result = explode('@', $URL);
echo("<pre>");print_r($Result[1]);
?>
您可以使用Web服务器配置修复此问题,而不是使用PHP。
在Apache(https://httpd.apache.org/docs/2.4/rewrite/remapping.html)中重写规则应该可以解决问题。我希望nginx能提供类似的功能。
如果您使用Apache或Nginx为您执行此操作,则会更快,因为您不会有运行PHP脚本的开销。
以上是关于如何在php中的url中的'@' - 选择器之后获取所有内容的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在没有将'web'目录的内容移动到root的情况下从Symfony应用程序中的url中删除'/ web'?
img src 或者 background:url('') 中的地址是接口, 如何设置请求头