我有一个简单的PHP Slim 3项目。当.htaccess和index.php在根目录中但是我想将它们保存在子目录“public”中时,一切正常并且花花公子。当我在那里,我得到错误404.这不是强制性的事情,但我想保持结构中的一切,并知道是什么导致错误或如何修复它以供将来参考。
项目结构
root
app
controllers
bootstrap
logs
public
css
js
resources
vendor
的.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
的index.php
<?php
// Require application bootstrap
require __DIR__ . '/../bootstrap/app.php';
// Run Slim
$app->run();
注意:项目位于Apache上运行的远程服务器上
基于你的文件.htaccess应该是这样的
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ public/index.php [QSA,L]
添加公共将其重定向到公用文件夹和index.php
的index.php
放入公共文件夹时应该看起来像这样的东西
<?php
// Require application bootstrap
require dirname(__DIR__). '/bootstrap/app.php';
// Run Slim
$app->run()
我希望这有帮助
请注意这个简单的帮助,可能存在安全问题,因为@Eric在我的评论中建议,所以可以做额外的工作,这只是为了解决你当前的问题,以减少它可能给你的任何头痛
如果您可以访问Virtual apache conf文件,则可以帮助解决此类安全问题,您只需将documentRoot指向公共文件,并将您之前的.htaccess文件放在index.php旁边的公共文件夹中,但这次是.htaccess使用您之前的配置
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
如果您没有访问权限,可以在cpanel的共享主机上使用,只需将index.php文件和.htaccess放在public_html中,并将其余的应用程序文件和文件夹放在需要包含在public_html中的必要文件和文件夹中。文件夹,如你的CSS,js和图像。
我希望这更有帮助