.htaccess - .htaccess 子文件夹的根 url,以及根文件夹的特定 url
问题描述
我的设置很奇怪,不用说我在我可以改变的方面特别有限。目前,对我来说最容易更改的是服务器的.htaccess
文件。当前目录设置如下所示:
/
是一个wordpress安装
/front-end
是一个使用 wordpress 安装 REST API 来获取数据的反应网站
我正在尝试获取它,以便当我访问example.com
它时提供内容,/front-end
但所有请求/dashboard
都来自根目录。
例如,这些 URL 将执行以下操作:
/
并/contact
指向目录中的index.html
文件front-end
(react-router 会选择/contact
)
/dashboard/wp-admin
并/dashboard/wp-json/menus
让路由目录中的 wordpress 接管。(这些总是会开始/dashboard
)
我试图实现的目标是什么?
我有这个开始,但我不确定如何忽略/dashboard
路线
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-s
RewriteCond %{DOCUMENT_ROOT}/front-end/%{REQUEST_URI} -s
RewriteRule . /front-end/index.html [L]
解决方案
RewriteEngine On
RewriteRule ^/?dashboard/(.*)$ /$1?wordpress=true [L,NC]
RewriteCond %{QUERY_STRING} !^.*wordpress=true.*$ [NC]
RewriteCond %{REQUEST_URI} !^/?front\-end.*$ [NC]
RewriteRule ^(.*)$ front-end/$1 [L,NC]
在上面的规则中,我们首先检查我们
dashboard
的请求中是否有。如果是,我们会故意附加一个查询字符串wordpress=true
,以避免与您的 react 文件夹混淆并遇到太多重定向问题。这样,我们也知道当前请求是 for
wordpress
并且进一步的重写规则不应该触及它。在第二个重写规则中,我们检查是否有条件,
wordpress=true
并查看 URL 中是否没有front-end
(也适用于内部路由,无需明确指定)。如果它通过了两个测试,我们将它重定向到您的 reactfront-end
,否则我们让它按原样执行。附加的原因
!^/?front\-end.*$
是为了避免无限的内部重定向到自身。
推荐阅读
- c++ - 我在 TSP 的 C++ 解决方案中遇到转换错误
- haskell - 折叠无限列表时堆栈溢出?
- vba - VBA - 设置图片框大小以匹配绘制的项目
- batch-file - 使用for循环中的forfiles递归列出目录中的所有文件参数
- python - 为什么绑定pdst与目标ip地址并绑定广播mac地址而不是目标mac地址
- kubernetes - 通过 Kubernetes 上的 IPVS 负载均衡器公开多个服务(或服务实例)
- php - Envelope':在 php 中验证 SOAP 响应时,没有可用于验证根错误的匹配全局声明
- sql - 如何从父字符串中分离结果?
- javascript - 在javascript中使用while循环重新提示用户输入
- git - 恢复由于 Head 分离而意外丢失的提交