我的设置很奇怪,不用说我在可以更改的内容上特别受限制。目前,对我来说最容易更改的是服务器的.htaccess
文件。当前目录设置如下:
/
是wordpress的安装
/front-end
是一个React网站,使用wordpress安装REST API来获取数据
我正在尝试获取它,以便当我转到example.com
时,它从/front-end
提供内容,但对/dashboard
的所有请求都从根目录得到。
例如,这些URL将执行以下操作:
/
和/contact
指向index.html
目录中的front-end
文件(反应路由器将拾取/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]
答案 0 :(得分:0)
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文件夹混淆,并遇到太多重定向问题。
这样,我们也知道当前请求是针对wordpress
的,进一步的重写规则不应触及它。
在第二个重写规则中,我们检查是否具有wordpress=true
的条件,并查看URL中是否还没有front-end
(也适用于内部路由)并且无需明确指定)。如果它通过了这两个测试,则将其重定向到您的react front-end
,否则我们将其按原样执行。
添加!^/?front\-end.*$
的原因是为了避免对其自身进行无限的内部重定向。