简单的PHP API在Cpanel中给出错误500



我按照本教程用PHP制作了一个简单的API。它在我的电脑上完美运行。我在源文件夹中添加了其他一些php文件,并在项目中添加了一个作曲家包(Firebase/JWT(,因此创建了一个供应商文件夹和几个作曲家文件。现在,项目文件夹如下所示:

/
- /plublic
-- .htaccess
-- index.php // requires src/functions.php
- /src
-- connection.php
-- functions.php // requires other src/.php files and JWT from composer
-- panel.php
-- responses.php
- /vendor
-- /composer // and files
-- /firebase // and files
-- autoload.php
.htaccess
composer.json
composer.lock

我使用子域(api.mydomain.com(将其上传到我的cpanel托管(在api/(。我用cpanel制作了子域,并首先将根文件夹设置为api/public,但它不起作用(500错误(。然后我尝试将子域指向 api/,但这也不起作用。我能做什么?我认为问题出在 .htaccess 文件中。

#root .htaccess
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
#/public .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

我对.htaccess或作曲家了解不多,所以我没有移动任何东西。谢谢。

很明显为什么它不起作用。看看你的规则:

#root .htaccess
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
  1. .htaccess 文件中的第一个规则重写根的任何请求,例如www.example.comapi.example.com/到子文件夹/public
  2. 第二条规则对此进行了补充,并重写了对子目录/public 的任何其他请求,例如api.example.com/testapi.example.com/public/test

因此,实际上,这两个规则之一将始终触发。

由于您已将 api.example.com 的根设置为/public,因此找不到/public/public子文件夹;因此,您会收到错误 500。

要解决此问题,您可以尝试删除根 .htaccess 中的两个规则,或者您可以将/api 的根目录设置为不子文件夹。

public/.htaccess 文件具有典型的单入口点配置,应该没问题。

始终在隐身模式下使用全新浏览器来测试更改。

相关内容

  • 没有找到相关文章

最新更新