PHP Slim 3.htaccess和index.PHP在子目录中不工作
我有一个简单的PHP Slim 3项目。当.htaccess和index.php位于根目录中时,一切都正常工作,但我想将它们保留在“public”子目录中。当我有他们在那里,我得到错误404。这不是一件强制性的事情,但我想保持一切在结构中,并知道是什么导致了错误或如何修复它,以供将来参考 项目结构PHP Slim 3.htaccess和index.PHP在子目录中不工作,php,apache,.htaccess,slim-3,Php,Apache,.htaccess,Slim 3,我有一个简单的PHP Slim 3项目。当.htaccess和index.php位于根目录中时,一切都正常工作,但我想将它们保留在“public”子目录中。当我有他们在那里,我得到错误404。这不是一件强制性的事情,但我想保持一切在结构中,并知道是什么导致了错误或如何修复它,以供将来参考 项目结构 root app controllers bootstrap logs public css js resources vendor .htaccess RewriteEng
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();
基于您的文件的
.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()
当您没有访问权限时,比如说在与cpanel共享的主机上,只需将index.php文件和.htaccess放在public_html中,并将其余的应用程序文件和文件夹放在public_html文件夹中必要的文件和文件夹旁边,如css、js和图像
基于您的文件,我希望这会更有帮助
.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()
当您没有访问权限时,比如说在与cpanel共享的主机上,只需将index.php文件和.htaccess放在public_html中,并将其余的应用程序文件和文件夹放在public_html文件夹中必要的文件和文件夹旁边,如css、js和图像
我希望这会更有帮助您的ApacheVirtualHost
也应该指向public
而不是root
。我会尝试您的解决方案,但我担心我不能,因为我租用的远程服务器不允许我编辑Apache配置。维护计划通常提供类似的配置目录结构。他们有一个专用的private
和public
文件夹。您是否尝试过此前端控制器?您的ApacheVirtualHost
也应该指向public
而不是root
。我会尝试您的解决方案,但我恐怕无法访问,因为我租用的远程服务器不允许我编辑Apache配置。测试计划通常提供类似的目录结构。他们有一个专用的private
和public
文件夹。您是否尝试过此前端控制器?您的回答存在安全问题。仍然可以访问public
之外的文件public
文件夹的存在是有原因的。同意,我只是想给此人一个解决当前情况的方法,我不打算让此人的事情复杂化,我也不想假设此人拥有广博的知识。但我会让那个人知道安全措施tendencies@Ezekiel-最好在答案中解决任何安全问题。如果不是,OP可能会认为这完全没问题,并继续构建不安全的应用程序。让我们互相帮助,打造更好、更安全的应用程序。:-)@MagnusEriksson非常感谢,我已经注意到了这一点,将立即让此人知道,以及可能的地址such@Eric我有点不知所措,因为我看不出这个答案中的安全问题在哪里。仍然可以访问public
之外的文件public
文件夹的存在是有原因的。同意,我只是想给此人一个解决当前情况的方法,我不打算让此人的事情复杂化,我也不想假设此人拥有广博的知识。但我会让那个人知道安全措施tendencies@Ezekiel-最好在答案中解决任何安全问题。如果不是,OP可能会认为这完全没问题,并继续构建不安全的应用程序。让我们互相帮助,打造更好、更安全的应用程序。:-)@MagnusEriksson非常感谢,我已经注意到了这一点,将立即让此人知道,以及可能的地址such@Eric我有点不知所措,因为我看不出这个答案中的安全问题在哪里:/