【问题标题】:Phalcon PHP Project not mapping (server showing directory view)Phalcon PHP 项目未映射(服务器显示目录视图)
【发布时间】:2017-03-09 22:00:40
【问题描述】:

我正处于将网站迁移到 Phalcon PHP 框架的早期阶段。但是我偶然发现了第一个问题。

我已经按照各种教程的规定很好地设置了 Phalcon 项目。我检查了我的服务器是否安装了 Phalcon,并且我已将项目上传到 /www 目录。然而,现在当我浏览 URL 而不是获得漂亮的呈现网页时,我实际上只是获得了我的服务器的目录视图(屏幕截图 1)。即使当我深入研究我的 Phalcon 项目的目录时,它仍然只进入目录视图(屏幕截图 2)。只有当我浏览到 /phalcon-project/public 时,它才最终通过公共目录中的引导 index.php 识别并呈现来自控制器和视图的索引(屏幕截图 3)。

关于为什么它不映射的任何想法?请注意,正如您在我的顶级 (/www) 中看到的,我有 2 个目录;让我们称它们为 /phalcon-project 和 /other-website 因为我有另一个站点从那里运行(该站点上没有 PHP 框架,只是一个普通的无聊的旧静态站点)我的 URL www.phalcon-project.com 映射到 /www目录和我的网址 www.other-site.com 映射到 /www/other-site... 我不认为这会导致问题,但可能是这样,还是其他原因?

屏幕截图 1:

屏幕截图 2:

屏幕截图 3:

【问题讨论】:

  • 你的虚拟主机是什么样子的?
  • @kosta GNU Linux 共享服务器。 mod_rewrite 已启用。

标签: php apache .htaccess phalcon


【解决方案1】:

听起来您没有正确设置虚拟主机。 您可以修改它以使其成为根 /www/public,或者使用 Phalcon 网站上详述的 .htaccess 文件。

https://docs.phalconphp.com/uk/latest/reference/apache.html

因此,在您的情况下,您将在文档根目录的 .htaccess 文件中包含以下内容。 (/www)

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule  ^$ public/    [L]
  RewriteRule  ((?s).*) public/$1 [L]
</IfModule>

然后是 /www/public 目录下的以下 .htaccess 文件。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^((?s).*)$ index.php?_url=/$1 [QSA,L]
</IfModule>

【讨论】:

  • 谢谢!我不得不稍微修改第一个 .htaccess 文件,因为它没有在 public 之前列出主目录(没有 /www/public,它是 /www/phalcon-project/public 所以只是修改了这两行以包含额外的目录)。
猜你喜欢
  • 2015-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-26
  • 2013-01-29
  • 1970-01-01
  • 2014-03-02
相关资源
最近更新 更多