我有一个用React构建的前端和一个用Node JS和Express构建的后端。我正在使用cPanel托管网站。
React版本的文件位于home / public_html目录中,后端文件位于home / server目录中。
-home
--public_html
---index.html
---// *rest of the frontend files*
--server
---server.js
---api
--- // *rest of the backend files*
在public_html目录中,我添加了一个具有以下代码的.htaccess文件
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^server\.js$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . server/server.js [L]
</IfModule>
根据我的理解,应该将server/server.js
设置为切入点。
(此语法正确吗?)
在我的server.js
文件中,设置以下内容:
if (process.env.NODE_ENV === 'production') {
app.use(express.static(path.join(__dirname, '../public_html')));
}
应该可以从pubic_html文件夹中提供静态文件。
在加载网站时,我看到正在处理前端,但是对API响应的任何请求都带有400状态代码。
在我的axios配置中,我正在设置
const BASE_URL = process.env.NODE_ENV === "production" ? "/api/" : "//localhost:3030/api/";
这是我用来将网站上传到Heroku的方式。它以http://www.example.com/api/
解析
问题是在cPanel上http://www.example.com/
被设置为public_html目录。我需要使BASE_URL
回到服务器目录的路径。
我的问题是: 我如何在axios上设置返回服务器目录? 要么 我应该将服务器目录放在public_html目录中吗?如果是这样,允许人们浏览我的服务器目录并访问敏感内容是否存在安全风险?
我将不胜感激!谢谢。