Composer Web应用程序文件夹结构

时间:2015-01-16 02:14:50

标签: php url url-routing composer-php

我正在处理一个存在于Web根目录下的子目录中的应用程序。我的应用程序文件夹结构是:

website root/           
  |- index.php
  |- my-application/
       |- src/
           |- index.php
       |- tests/
       |- vendor/
       |- .gitignore
       |- composer.json
       |- phpunit.xml

根据这个stackoverflow question,src目录应该在根目录中。在这种情况下这是不可能的。

除了安装此应用程序时,应用程序的索引现在位于应用程序文件夹的src文件夹中。这意味着url将是localhost / application / src / index.php。

如何为应用程序索引文件localhost / application / index.php创建url?

我无法控制webroot。

1 个答案:

答案 0 :(得分:2)

您的源文件布局应始终包含“src”(或“lib”或您要调用的任何内容)文件夹,其中包含所有必需的源代码,可能是包含第三方代码的“vendor”文件夹,以及“webroot”文件夹,这是此设置中唯一将通过Web服务器公开的文件夹。 E.g:

myapp/
    src/
        Acme/
            MyApp/
                ...
    vendor/
        ...
    webroot/
        index.php
        css/
            ...
        js/
            ...

您可以将此文件夹存储在任何您喜欢的位置。最后,您将Web服务器配置为提供myapp/webroot/。您可以通过以下方式执行此操作:

  1. 将该文件夹符号链接到Web服务器的文档根目录:

    /var/www/myapp -> /usr/local/myapp/webroot
    
  2. 使用mod_rewrite指令相应地重写请求:

    RewriteRule /theapp/(.*) /usr/local/myapp/webroot/$1
    
  3. 相应地配置Web服务器的核心,以便从应用程序的目录中提供某些URL:

    Alias /theapp /usr/local/myapp/webroot
    # or whatever other way you prefer
    
  4. 您无需以任何方式将文件存储在文件系统中,就像显示URL一样。在URL和文件和/或程序响应之间处理此解决方案是Web服务器的工作,它提供了许多工具,使其在必要时具有灵活性。使用这些工具。