我正在尝试进行Strapi.io
安装,以便它可以在端口80上运行的现有Apache站点上运行。
详细信息:
我已经编辑了我的apache配置文件并添加了以下几行:
ProxyPass /admin http://localhost:1337/admin
ProxyPassReverse /admin http://localhost:1337/admin
ProxyPass /api http://localhost:1337/
ProxyPassReverse /api http://localhost:1337/
当前,该功能对于/ api页面有效,但不适用于管理页面。在“管理”页面上,出现以下控制台错误:
main.js:40未捕获(在承诺中)SyntaxError:意外令牌<中 位置0的JSON 在r(main.js:40)r @ main.js:40 Promise.then(异步)u @ main.js:1 ./node_modules/strapi-helper-plugin/lib/src/app.js @ main.js:40 t @ main.js:1(匿名)@ main.js:1(匿名)@ main.js:1
main.js:45未捕获(承诺)语法错误:意外 令牌<在JSON中的位置0 在t(main.js:45)t @ main.js:45 Promise.then(异步)u @ main.js:1 ./node_modules/strapi-helper-plugin/lib/src/app.js @ main.js:45一个@ main.js:1(匿名)@ main.js:1(匿名)@
main.js:1 main.js:40未捕获(承诺)语法错误:意外 令牌<在JSON中的位置0 在n(main.js:40)
如果刷新页面,则main.js
的全部或部分将显示为admin.js
。不确定是否会有所不同:
main.js:40未捕获(在承诺中)SyntaxError:意外令牌<中 位置0的JSON 在r(main.js:40)r @ main.js:40 Promise.then(异步)u @ main.js:1 ./node_modules/strapi-helper-plugin/lib/src/app.js @ main.js:40 t @ main.js:1(匿名)@ main.js:1(匿名)@ main.js:1
admin:1未捕获(承诺)语法错误:意外令牌
admin:1 未捕获(承诺)SyntaxError:JSON中的意外令牌<位于 位置0
为什么我遇到此问题。我该怎么做才能使其在我的Apache服务器上正常工作?
要澄清:
这是一个非常简单的两分钟安装。我尚未开始向该网站添加任何内容。我只是想让管理面板通过Apache工作。
答案 0 :(得分:1)
Apache默认会根据其收到的任何请求提供index.html。
因此,我首先想到的是添加
DirectoryIndex disabled
.htaccess,因为trapi.io API运行在/
根文件夹下,而apache则返回了默认的Apache .html文件,该文件将覆盖API请求。
那里到底发生了什么?
1.-您的JavaScript应用(strapi.io)在您的API点要求输入data.json
,并获取index.html的内容。
2.--因为index.html的内容不是JSON,并且以<
开头,所以它会引发错误消息。 JSON文件不能以<
开头。
答案 1 :(得分:1)
您可能会遇到问题,因为Strapi当前未实现URL前缀。
要解决此问题,您可能需要使用子域或使用“ /”而不是“ / api”在根目录的端口80上运行Strapi。如果同一Apache服务器上还有其他项目或应用程序,则可以使用ProxyPassMatch忽略这些路径。例如:
ProxyPassMatch ^/otherproject !
ProxyPass "/" http://localhost:1337/
ProxyPassReverse "/" http://localhost:1337/
在这种情况下,“ / admin”路由也可以运行,而无需进一步修改。
或者,有些人使用Strapi中间件将前缀应用于其路由(请参见example here)。