仅为特定文件夹重写 URL 并删除 Apache 中的部分 URL

仅为特定文件夹重写 URL 并删除 Apache 中的部分 URL

我有一个 PHP 旧项目,正在尝试对其进行现代化改造。旧项目的路由只是服务器上的文件,您可以通过 URL 访问这些文件。

例如,放置在 中的文件folder/subfolder/file.php将与 url 匹配https://example.com/folder/subfolder/file.php。相当标准的东西。

新的路由系统将涉及 URL 重写,其中所有请求都被重定向到一个中心点(通常是index.php),然后 PHP 在内部决定如何处理它们。

不幸的是,两种路由方法必须同时存在。弃用的旧版 URL 将重定向301 PERMANENT到新 URL。例如,https://example.com/shop/class/api.php将(理想情况下)重定向到https://example.com/shop/api/v1/shop及其所有查询参数。

假设我有一个简单的文件夹结构,如下所示

- index
   - index.php

所有新 URL 都应重定向到此文件夹。此文件夹的文件优先级始终为DirectoryIndex index.php index.html

重定向本身很简单

Redirect 301 /shop/class/api.php /index/api/v1/shop

下一步,我不知道该怎么做,而且我的谷歌搜索也帮不上忙,具体如下:

  • 我只想重写index文件夹的 URL,否则旧的 URL 将不再起作用。

  • 我想index从 URL 中删除部分,只保留尾部(重定向发生后)。例如,重定向到之后的部分被/shop/class/api.php删除,只保留部分。/index/api/v1/shopindex/api/v1/shop

答案1

FallbackResource /index.php

这就是你所需要的。

任何对不存在文件的请求都将被路由到该文件,而现有的路径和文件将照常得到答复。

这是当前处理具有虚拟 URL 的请求的主控制器文件的方法,例如 php 通常所做的那样。

mod_dir Fallback资源信息页面

相关内容