为什么这个PHP框架显示目录索引而不是网页?

时间:2016-12-27 07:59:44

标签: php apache amazon-ec2

由于这是一个与完成的整个项目相关的问题,我认为我不能发布整个代码。如果需要任何其他信息,请询问,我将编辑此信息。

我有一个使用此PHP框架为我的某个类开发的网站:https://github.com/panique/mini。这个网站适用于我从HostGator租用的服务器(它为我提供了LAMP堆栈),我现在正试图将网站移动到AWS EC2实例。

我使用亚马逊提供的文档和教程设置了AWS EC2,并且能够在安装LAMP堆栈后成功托管我的实例中的网页。我使用的PHP框架需要PHP 5.3+,我在我的EC2实例上。我还正确设置了MySql,并且能够使用MySql Workbench访问我的数据库。

我已将项目文件上传到提供网页的公共目录public List<MyClass> GetResults(p1, out string message) { string message; OperatorClass obj= new OperatorClass(); return obj.GetResults(p1,out message); } 。并使用我的MySql信息正确配置了var/www/html/文件(它与我用于MySql Workbench的登录凭据完全相同)。

现在谈谈我遇到的问题。每当我浏览到mydomain.com/Project(假设项目在config.php)时,我得到的目录索引而不是我开发的Web应用程序。从我在Github自述文件中读到的内容,PHP框架应该在var/www/html/Project中配置MySql数据库信息后工作。我知道这是正确配置的,因为我能够调用数据库表。

有没有人有过这个PHP框架的经验?这是我第一次在Amazon Linux中设置LAMP堆栈。我想知道是否有任何与Apache相关的配置设置我应该配置?

1 个答案:

答案 0 :(得分:2)

今天的新框架将/public目录分开,以便访问请求。

您可以选择

<强> 1。将您的apache指向/public 编辑fie /etc/httpd/conf/httpd.conf(取决于分发)。 并改变

DocumentRoot "/var/www/html"   

DocumentRoot "/var/www/html/myframework/public"

您也可以使用VirtualHost或Alias执行此操作。

<强> 2。使用.htaccess + mod_rewrite到框架的根目录。

RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L,QSA]

第3。将index.php文件添加到框架的根目录。

<?php
header('Location: public/');

// This option is not really fix the problem. it's just redirect user to    `/public`. you will always have `/public` in your urls.

// It's only work for home page. 
// You can use only relative path to your assets.