如何将根文件夹作为子文件夹重定向到站点?
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。
我正在尝试使用 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。