【问题标题】:PHP CodeIgniter (how to make public folder)PHP CodeIgniter(如何制作公用文件夹)
【发布时间】:2014-03-10 14:00:18
【问题描述】:

我是 CodeIgniter 的新手。

我创建了公共文件夹,我想把我的 css/js/images 文件夹放在那里。

我的设置是这样的:

application
   cache
   config
   controllers
   public
       css
       js
       images
  ....
  ....
  ....

我的 .htaccess 是:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /moviesmvc/

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #When your application folder isn't in the system folder
    #This snippet prevents user access to the application folder
    #Submitted by: Fabdrol
    #Rename 'application' to your applications folder name.
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]

    </IfModule>

    <IfModule !mod_rewrite.c>
        # If we don't have mod_rewrite installed, all 404's
        # can be sent to index.php, and everything works as normal.
        # Submitted by: ElliotHaughin

    ErrorDocument 404 /index.php
</IfModule> 

我怎样才能公开这个公用文件夹?

//////////////////////

【问题讨论】:

  • 我通常使用这种方法。但是,我从未在 .htaccess 文件中使用过规则。尝试将 public 文件夹移到 application 文件夹之外。放在根目录下。
  • 添加本地主机链接没有意义,因为除了您自己之外没有人可以看到。它完全基于您的 PC。
  • 像我说的那样移动公用文件夹并尝试将 url 设置为 localhost/moviesmvc/public/css/resset.css

标签: php .htaccess codeigniter


【解决方案1】:

真的不想将您的公用文件夹放在您的应用程序文件夹中。你的目录结构应该是这样的

 -- application
 -- system
 -- public
    -- css
    -- js
    -- images
    -- index.php
    -- .htaccess

这是遵循的最佳做法,您将在未来节省大量时间和潜在问题

【讨论】:

    【解决方案2】:

    如果是 Linux 服务器,那么您需要将文件夹权限更改为 755 或 777。为此请使用 Google,您将获得更多详细信息。

    我建议现在不要使用 CI,因为在他们找到新所有者之前,它不会再被开发。相反,我会推荐 Laravel,因为它是一个非常棒的框架,但你也应该尝试 CakePHP、Symfony、Yii 或其他仍在开发中的东西。

    【讨论】:

      【解决方案3】:

      检查您的公共文件夹权限以及使用 base_url() 函数来获取公共 url..

      例如

      echo base_url('public/images'); to get image public path
      

      【讨论】:

        【解决方案4】:

        我不建议实施这种类型的设计,原因如下:

        • Web 服务器被设计为不允许文档根目录下的公共访问。这有助于易于设置和安全。

        • 如果在根目录中进行了重大的安全更改,则必须将其复制到您的公用文件夹中。

        • 您正在向 Web 服务器的 EVERY HTTP/HTTPS 调用添加不必要的处理,因为现在必须为每个请求处理规则。如果您可以将其构建到您的 httpd.conf 文件中,那么开销几乎不存在。

        TL;DR;

        无需通过在周边添加块来重新发明轮子。

        【讨论】:

          猜你喜欢
          • 2021-12-17
          • 2016-04-14
          • 2016-10-25
          • 1970-01-01
          • 2012-03-02
          • 2017-07-27
          • 2017-04-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多