php - Composer Web 应用程序文件夹结构

标签 php url url-routing composer-php

我正在开发一个应用程序,该应用程序存在于网络根目录的子目录中。我的应用程序文件夹结构是:

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?

我无法控制网络根目录。

最佳答案

您的源文件布局应始终包含一个“src”(或“lib”或任何您想称呼的名称)文件夹,其中包含所有必要的源代码,可能是一个包含第 3 方代码的“vendor”文件夹,以及一个“webroot”文件夹是此设置中唯一将通过 Web 服务器公开的文件夹。例如:

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

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

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

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

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

    Alias /theapp /usr/local/myapp/webroot
    # or whatever other way you prefer
    

您不需要以任何方式将文件完全按照 URL 的显示方式存储在文件系统中。 Web 服务器的工作就是处理 URL 和文件和/或编程响应之间的解析,并且它提供了许多工具来使其尽可能灵活。使用这些工具。

关于php - Composer Web 应用程序文件夹结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27976306/

相关文章:

php - MySql : Increase query execution time for pagination

php - PayPal IPN 未连接到我的数据库以插入交易

php - 实时MySQL监控

url - IIS重写虚拟文件夹

url-routing - Asp.Net 5 中的统一 MVC Controller 路由

javascript - AJAX 仅在一行中发送文本

c - 在 C 中删除 URL 中的单点路径名

regex - 获取url参数并保存变量或cookie

php - 如何在php中动态创建一个不存在的页面

javascript - 从 zend 框架的应用程序目录中访问 javascript/css