如果找不到,我们如何使用Apache重定向到新的HTML静态内容,并回退到基于CMS的旧PHP版本? (nginx try_files)

问题 :

我们正在用Gatsby的SSG HTML版本替换旧的基于PHP的网站(基于Statamic v1).

问题是:现有页面仅一部分必须替换,而成员空间以及/ login和/ contact页面必须暂时保留.

因此,我想知道我应该如何以新的版本适应当前的.htaccess配置,该版本首先寻找在特定目录(public /)中找到的新静态内容,或者如果没有,则退回到旧的index.php?path =方法.

注意 :

使用nginx,这可以通过try_files指令完成
所以,这个问题与某种程度上有关:
https://serverfault.com/questions/290784/what-is-apaches-equivalent-of-nginxs-try-files
但我绝对不理解balancer:// app_cluster的内容.

上下文 :

这是目录必须由Apache提供的简化视图:

www/
├── index.php
├── (... more CMS files)
└── public
    ├── index.html
    ├── main.js
    ├── robots.txt
    ├── img
    │   ├── intro.jpg
    │   ├── logo.svg
    │   └── table.png
    ├── about
    │   └── index.html
    └── staff
        └── index.html

任何公开/必须先送达
在最终网址中未显示/ public:

URL : /img/intro.jpg => /public/img/intro.jpg (rewritten as /img/intro.jpg)

每个与/index.html页面匹配的URL都必须在没有它的情况下进行重写:

URL : '' or '/' => /public/index.html (rewritten as '')
URL : /staff or /staff/ => /public/staff/index.html (rewritten as /staff)

找不到的每个文件都已重定向到/index.php?path = …,现在已完成.

问题

是否只有使用Apache而不重新分类为两个单独的子域和virtual_hosts ..才能将两个源分开?
我想是的,鉴于Apache具有不可思议的功能,
但是由于我现在对nginx的操作方式越来越习惯,所以我真的需要您的帮助!

上一篇:PHP-重定向到首页,而不是404错误页面!


下一篇:php-.htaccess twitter或facebook URL命名约定