php - 在本地主机上的 Apache 中将根文件夹设置为子文件夹,这也将在生产服务器上工作

标签 php apache server directory

我有一个项目,它有一个“公共(public)”和“私有(private)”文件夹结构,位于主项目根文件夹内的同一级别(见附图)。
我希望本地服务器(在本例中为 MAMP)自动默认为“公共(public)”文件夹作为域根目录。这样做最好是在 php 中还是在 Apache 中?
此外,当我将网站上传到生产服务器时,域名将设置在“公共(public)”文件夹中,所以我理想情况下想要一个解决方案,这意味着我在上传网站时仍然是这种情况 - 即www.example.com将是“项目/公共(public)”文件夹。
这对我来说是全新的,所以对于解决这个问题的最佳方法有点不知所措。
folder structure

最佳答案

基本上,您只需要创建一个虚拟主机配置文件并在 Apache 配置文件中启用您的应用程序将要监听请求的端口。我从未使用过 MAMP,所以我给你一个 Linux 机器上的虚拟主机配置示例

  • 在/etc/httpd/conf.d/中创建一个 conf 文件
    vim/etc/httpd/conf.d/example.conf
  • 该文件将告诉 Apache 服务器的文档根目录是什么
    一个特定的端口。 PORT 可以是保留以外的任何可用端口
    端口 (0-1023)
    <虚拟主机 *:80>
    保持事件状态
    DocumentRoot "/var/www/example/public"
    <Directory "/var/www/example/public/">
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    
        # enable mod_rewrite
        RewriteEngine on
    
        # Handle Authorization Header
        RewriteCond %{HTTP:Authorization} .
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
        # Redirect Trailing Slashes If Not A Folder...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} (.+)/$
        RewriteRule ^ %1 [L,R=301]
    
        # Handle Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </Directory>
    
    LogLevel Warn       
    
    ErrorLog  /var/log/httpd/example-error.log
    CustomLog /var/log/httpd/example-access.log combined
    

  • 添加此端口号 港口 在 Apache 配置文件中
    (/etc/httpd/conf/httpd.conf)
    听端口
  • 重新启动 Apache 服务器

  • 与 XAMP 和 WAMP 一样,MAMP 也应该有一个 GUI 来配置 Apache 服务器。您可以找到保存这些虚拟主机配置的位置/文件夹,并且可以直接通过任何文本编辑器修改该文件
    你也可以引用这些
    Configuring Virtual Hosts With MAMP
    Adding a virtual host in MAMP for Mac

    关于php - 在本地主机上的 Apache 中将根文件夹设置为子文件夹,这也将在生产服务器上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67443435/

    相关文章:

    php - 匹配最佳相似数组元素

    php - 四舍五入到小数点后第二位

    php - 检测在 PHP 中关闭的浏览器连接

    php - Windows 上的 Apache 找不到 php 扩展

    ruby - Apache、Ruby,没有框架

    c - 关于so​​cket编程中这个strncpy函数的一个问题

    PHP 引用数组元素无需触摸即可更改

    php - pcre正则表达式匹配前两个词,数字

    html - 我的浏览器不解释我的 css 文件

    docker - Traefik和我的世界