【问题标题】:Why does this PHP Framework display the directory index rather than the webpage?为什么这个 PHP 框架显示的是目录索引而不是网页?
【发布时间】:2016-12-28 16:27:04
【问题描述】:

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

我有一个网站是使用这个 PHP 框架为我的一个课程开发的:https://github.com/panique/mini。该网站在我从 HostGator 租用的服务器上运行(它为我提供了 LAMP 堆栈),我现在正尝试将网站移动到 AWS EC2 实例。

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

我已将项目文件上传到提供网页的公共目录var/www/html/。并使用我的 MySql 信息正确配置了 config.php 文件(它与我用于 MySql Workbench 的登录凭据完全相同)。

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

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

【问题讨论】:

  • 你有index.php吗?因为当你没有 index.php 时会发生这种情况
  • @FranzGleichmann 是的,index.php 在我使用的 PHP 框架内的 public 文件夹中。
  • 是的...你必须在 main 文件夹中有一个。您当前获取目录索引的那个。
  • @FranzGleichmann 我使用的 PHP 框架在public 文件夹中有一个,该文件夹位于var/www/html/Project 目录中。我不确定我会在主文件夹的新 index.php 中放什么。
  • 如果这有帮助,有一个.htaccess 定义了'#这个文件是 - 如果你正确设置了 MINI - 不需要。 # 但是,出于后备原因(如果您不将 vhost 路由到 /public),它将保留在这里。 RewriteEngine on RewriteRule ^(.*) public/$1 [L]'

标签: php apache amazon-ec2


【解决方案1】:

今天的新框架分隔了/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.

【讨论】:

  • 有趣,这解决了目录索引问题,但现在我遇到的问题是实际public 文件夹中的所有文件都没有被正确访问。例如mydomain.com/Project/js/ 不存在。正确的 URL 应该是 mydomain.com/Project/public/js。由于此 URL 格式错误,public 文件夹中的所有文件都返回 404。有没有办法解决这个问题?
  • 你选择了哪个选项?
  • 我选择了第三个选项并加载了页面。除了在public 文件夹中加载资产之外,一切似乎都很好。
  • 是的,选项 3 会出现这种问题。您只能对资产使用相对路径。你不能使用绝对路径。我在答案中添加了注释。
猜你喜欢
  • 2014-06-28
  • 2016-08-04
  • 1970-01-01
  • 2020-05-16
  • 2019-01-31
  • 2011-09-25
  • 1970-01-01
  • 2017-11-24
相关资源
最近更新 更多