.htaccess根url到子文件夹,以及特定url到根文件夹

问题描述 投票:0回答:1

我的设置很奇怪,不用说我在改变方面特别有限。目前,我最容易改变的是服务器的.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]
.htaccess redirect
1个回答
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(也适用于内部路由,无需明确指定)。如果它通过了两个测试,我们将它重定向到你的反应front-end,否则我们让它按原样执行。
  • 附加!^/?front\-end.*$的原因是为了避免无限的内部重定向到自身。
© www.soinside.com 2019 - 2024. All rights reserved.