cPanel部署Django+React-Admin后无法访问子目录WordPress
解决React-admin与子目录WordPress的路由冲突
问题场景
在cPanel共享主机部署了Django后端+React-admin前端的应用,同时在子目录karmodir.ir/wp/安装了WordPress。访问该WordPress子目录时,请求被React-admin拦截重定向,导致WordPress页面空白。
当前配置
React-admin路由代码
export const App = () => ( <CacheProvider value={cacheRtl}> <BrowserRouter> <Routes> {/* redirection for /wp/ */} <Route path="/wp/*" element={<Navigate to="/wp/" replace />} /> {/* Main routing for SiteAdmin */} <Route path="/*" element={<SiteAdmin />} /> </Routes> </BrowserRouter> </CacheProvider> );
根目录.htaccess文件
# Redirect /wp/ to the correct WordPress path RewriteEngine On # Ensure the rule only applies to /wp/ requests RewriteCond %{REQUEST_URI} ^/wp/ RewriteRule ^wp/(.*)$ http://karmodir.ir/wp/$1 [L,R=301] # DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN PassengerAppRoot "/home/karmodir/jkar/jkar" PassengerBaseURI "/" PassengerPython "/home/karmodir/virtualenv/jkar/jkar/3.10/bin/python" # DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END # DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION BEGIN <IfModule Litespeed> </IfModule> # DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION END
解决方案
1. 调整React-admin路由
移除针对/wp/*的重定向路由规则,让服务器优先处理/wp路径的请求,而非在前端拦截。修改后的路由代码如下:
export const App = () => ( <CacheProvider value={cacheRtl}> <BrowserRouter> <Routes> {/* Main routing for SiteAdmin */} <Route path="/*" element={<SiteAdmin />} /> </Routes> </BrowserRouter> </CacheProvider> );
2. 修正根目录.htaccess配置
调整规则顺序,在Passenger配置前添加规则,让/wp开头的请求直接指向WordPress目录,绕过Passenger(即不交给React-admin/Django应用处理),同时移除多余的301重定向规则:
RewriteEngine On # 让/wp路径的请求直接访问WordPress目录,跳过Passenger处理 RewriteRule ^wp/(.*)$ /wp/$1 [L] # DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN PassengerAppRoot "/home/karmodir/jkar/jkar" PassengerBaseURI "/" PassengerPython "/home/karmodir/virtualenv/jkar/jkar/3.10/bin/python" # DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END # DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION BEGIN <IfModule Litespeed> </IfModule> # DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION END
3. 检查WordPress配置
- 登录WordPress后台,进入设置->常规,确认
WordPress地址(URL)和站点地址(URL)均为http://karmodir.ir/wp/(若启用HTTPS,需改为https://karmodir.ir/wp/)。 - 确保
/wp目录权限为755,目录内文件权限为644,避免权限问题导致无法访问。
内容的提问来源于stack exchange,提问作者Ahmad
相关产品推荐
相关产品推荐

