【问题标题】:How to redirect root folder as subfolder to site?如何将根文件夹作为子文件夹重定向到站点?
【发布时间】:2023-03-27 23:32:02
【问题描述】:

我正在尝试使用 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 安装。如果我将 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

【问题讨论】:

    标签: wordpress reactjs rest api virtualhost


    【解决方案1】:

    我相信如果您将 WordPress 安装在 /api 子文件夹中,该文件夹被视为 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/

    希望对你有帮助:)

    【讨论】:

    • 这并没有真正解决我的问题。我的虚拟主机为 api/ 文件夹中的 wordpress 安装返回 404。我觉得这是因为 React App 已经在使用域,因此与域发生冲突。我目前通过在构建文件夹中添加符号链接来解决它,但我觉得这不是解决它的正确方法。
    【解决方案2】:

    我想出的最好方法是将符号链接附加到api/ 目录并将其链接到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 虚拟主机。

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

    这是目录结构

    在后端 .htaccess 中是一个指向 wordpress 安装的重定向

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

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

    【讨论】:

      猜你喜欢
      • 2015-11-22
      • 2015-10-06
      • 1970-01-01
      • 2012-10-23
      • 2016-05-08
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 2018-09-30
      相关资源
      最近更新 更多