【问题标题】:Accessing a simple txt file inside webroot in cakePHP在 cakePHP 中访问 webroot 中的简单 txt 文件
【发布时间】:2014-02-20 23:15:54
【问题描述】:

我的 cakePHP 应用程序在 webroot 目录中生成一个简单的文本文件。

我尝试通过在浏览器中输入http://<my own domain>/simple.txt 来访问它,但显示的是应用程序索引页面,而不是我的文本文件。

如何使这个文本文件可以直接访问? 请帮帮我!

【问题讨论】:

    标签: php cakephp rewrite


    【解决方案1】:

    只有 webroot 是 web 可访问的

    猜测一下,你有以下结构(或类似的):

    docroot
        app
            Config/
            Controller/
            Model/
            Plugin/
            Test/
            tmp/
            View/
            webroot/
        lib/
        ...
        simple.txt
    

    该文件simple.txt 对浏览器无法访问。原因是,假设启用了 mod_rewrite,所有请求都会被顶级 .htaccess 文件重写为 foo -> app/webroot/foo

    要使文件可访问,只需将其放在 webroot 中:

    docroot
        app
            Config/
            Controller/
            Model/
            Plugin/
            Test/
            tmp/
            View/
            webroot/
                simple.txt <- moved
        lib/
        ...
    

    请注意,如果这是问题所在,您有一个development install - 使用生产安装会更好(让您的网络服务器指向 webroot 文件夹,而不是整个应用程序的根目录)。

    【讨论】:

      【解决方案2】:

      首先,将其添加为解析的扩展:

      Router::parseExtensions('txt');
      

      然后,创建一个连接路由:

      Router::connect('/simple.txt', array('controller' => 'examplecontroller', 'action' => 'simple');
      

      现在您将在examplecontrollersimple.ctp 视图中的simple() 方法中控制http://yourproject.com/simple.txt 的输出。

      这不是您指定的确切方式,但它确实有效,并且完成了“蛋糕方式”

      【讨论】:

      • My cakePHP application *generates* a simple text file 暗示文件内容是动态的,不是静态的
      【解决方案3】:

      这些 url ://simple.txt 对我来说似乎是错误的。应该是这样的:

      ://yourhost/yourproject/simple.txt

      我通常可以在我本地的 cake php 项目中以这些方式访问它。

      【讨论】:

      • 会很好,但是这个 txt 就像一个 sitemap.txt,所以它必须在 //myhost/simple.txt 路径中。
      • 您应该从项目根目录的 robots.txt 文件中添加指向这些文件的链接。
      • 好吧,这里最头疼的是webroot里面的任何文件都不能直接访问。如果我通过 ftp 将任何内容放在这里,我将无法直接访问它……烦人。我怀疑 .htaccess 文件可能对此负责,但我不确定。另外,在本地主机上,可以直接访问这些文件,但是在我将我的项目上传到服务器后,它们就无法访问了。我很困惑。
      • 如果您正在将文件放在webroot中,.htaccess文件不是一个因素,您可以暂时删除它以进行演示。对于您的问题,实际上只有 2 种可能性:1)文件 存在 2)apache 没有读取文件的权限。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多