如何将根文件夹作为子文件夹重定向到站点?

How to redirect root folder as subfolder to site?

我正在尝试使用 React 实现 Wordpress REST API。现代惯例似乎是将 API 设置为域的子文件夹,即

https://sitename.com/api/v1

I want to be able to go to 
https://sitename.com/api/v1/wp-admin

And be able to sign into wordpress and have it so the REST api is accessed like:

https://sitename.com/api/v1/wp-json/wp/v2/pages

我有这个文件结构:

里面api/是wordpress安装。如果我在 public 文件夹中包含 api 并指向带有虚拟主机的构建文件夹,它会按预期工作,除了当我构建 React 应用程序时它会清除 Wordpress 安装和重新启动整个过程。

我尝试将虚拟主机设置到子文件夹,但它仍然返回 404。

编辑:获取此 运行 的简单实例:

yarn create-react-app dir_name
cd dir_name
mkdir api
cd api
wp core download
# Add virtual host
# Generate SSL Cert

我相信如果您在 /api 子文件夹中安装 WordPress,那将被视为 WP 实例的根目录,因此不会向 REST API 端点添加任何前缀。

为此,您应该使用 "rest_url_prefix" 过滤器。类似于:

add_filter( 'rest_url_prefix', 'change_api_slug');
function change_api_slug( $slug ) {

    return 'api';

}

这是一篇非常好的文章:https://buddydev.com/modifying-api-base-url-prefix-for-wp-rest-api-plugin/

希望对您有所帮助:)

我想出的最好办法是将符号 link 附加到 api/ 目录,然后 link 将其附加到 build/ 目录。

# Source->Destination
ln -s /var/www/site.com/public/api /var/www/site.com/build/

根据您的配置,您可能需要更改 api/ 组,一旦您为服务器执行 yarn build 以访问 Wordpress(例如添加插件)。

快速 运行 通过:

ln -s /var/www/site.com/api /var/www/site.com/public/
yarn build/
sudo chown -R :www-data build/

编辑:我最近采用了一种感觉更好的方法,即使用 apache 虚拟主机。

首先,我将我的根目录分成 frontend 和一个 backend 目录。前端内部是 create-react-app 的输出。 backend 里面是 api/wp。我将 Wordpress 嵌套在一个 api 目录中,以防项目扩展并包含多个 api,它们将全部分组在一个地方。

这是目录结构

在后端 .htaccess 中是到 wordpress 安装的重定向

RewriteEngine On
RewriteBase /api
RewriteCond %{REQUEST_URI} !^/api/wp
RewriteRule (.*) wp/ [R=302,L]

在 wordpress 内部是我制作的一个空白主题,它重定向到 React 应用程序 url,在本例中,isma.test。