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

时间:2019-04-02 02:34:09

标签: .htaccess redirect

我的设置很奇怪,不用说我在可以更改的内容上特别受限制。目前,对我来说最容易更改的是服务器的.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]

1 个答案:

答案 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.*$的原因是为了避免对其自身进行无限的内部重定向。