我有一个简单的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
上运行的远程服务器上答案 0 :(得分:2)
根据您的文件 .htaccess应该是这样的
subset(RacePerState, State!="United States" && State!="District of Columbiaâ€" && !="Puerto Ricoâ€")
RacePerState <- RacePerState[!(RacePerState$Rank=="NA"),]
添加公共会将其重定向到公用文件夹 并为index.php
index.php
当放入公共文件夹时,应该看起来像这样
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ public/index.php [QSA,L]
我希望这会有所帮助
请注意这个简单的帮助,@ Eric在我的评论中提出了安全问题,所以可以做额外的工作,这只是为了解决你当前的问题,以减少它可能给予的任何头痛你
如果您可以访问Virtual apache conf文件,则可以帮助解决此类安全问题,您只需将documentRoot指向公共文件,然后将您之前的.htaccess文件放在index.php旁边的公用文件夹中。 但这次你的.htaccess使用你之前的配置
<?php
// Require application bootstrap
require dirname(__DIR__). '/bootstrap/app.php';
// Run Slim
$app->run()
如果您没有访问权限,请在cpanel共享主机上说,只需将index.php文件和.htaccess放在public_html中,并将其余的应用程序文件和文件夹放在必要的文件和文件夹旁边在public_html文件夹中,例如css,js和images。
我希望这更有帮助