无头WordPress与React站点的.htaccess配置:兼顾路由与API请求
解决无头React+WordPress的.htaccess路由冲突问题
你的问题出在当前的.htaccess规则会把所有非静态文件/目录的请求都转发到index.html,包括WordPress的API接口(wp-json、GraphQL),导致这些请求无法被WordPress正常处理。
只需要在规则中优先排除API相关路径,让这些请求直接交给WordPress处理,再处理React的路由转发即可。修改后的.htaccess配置如下:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / # 优先放行WordPress API相关请求 RewriteRule ^(wp-json|wp-graphql|graphql) - [L] # 处理React路由:仅当请求不是文件/目录时,转发到index.html RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] </IfModule>
关键规则说明:
RewriteRule ^(wp-json|wp-graphql|graphql) - [L]:这条规则会匹配所有以wp-json、wp-graphql(WPGraphQL插件默认路径)或graphql开头的请求,-表示不做重写,[L]表示这是最后一条匹配规则,确保这些API请求能被WordPress正常处理。- 后续规则保持不变,确保React的非根路径路由(比如
/about、/blog)能正确加载index.html,由React接管前端路由。
如果你的GraphQL API使用了其他自定义路径,只需要在括号内添加对应的路径即可,比如^(wp-json|custom-graphql-path)。
内容的提问来源于stack exchange,提问作者user2530671
相关产品推荐
相关产品推荐

