我跟着this tutorial用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或作曲家了解不多,所以我没有动过任何事情 . 谢谢 .
1 回答
很明显为什么它不起作用 . 看看你的规则:
.htaccess文件中的第一个规则重写了root的任何请求,例如
www.example.com
或api.example.com/
到子文件夹/public
.第二条规则对此进行了补充,并重写了对子目录/公共的任何其他请求,例如:
api.example.com/test
至api.example.com/public/test
因此,实际上,这两条规则中的一条将始终触发 .
由于您已将api.example.com的根目录设置为/ public,因此无法找到
/public/public
子文件夹;因此,你得到一个错误500 .要解决此问题,您可以尝试删除根.htaccess中的两个规则,也可以将/ api的根目录设置为子文件夹 .
public / .htaccess文件具有典型的单入口点配置,应该没问题 .
始终在隐身模式下使用全新浏览器来测试更改 .