You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在子文件夹中安装Mautic的更优方案咨询

解决Mautic子文件夹部署后.htaccess被更新覆盖的问题

以下是几个高效的解决方案,避免每次更新后手动修改.htaccess:

1. 使用独立配置文件存放自定义规则

Apache支持通过Include指令引入外部配置文件,将你的自定义规则放在不受Mautic更新影响的独立文件中:

  • 在主网站的根目录.htaccess中添加一行:
    Include /path/to/your/custom-mautic-rules.conf
    
  • 创建custom-mautic-rules.conf文件,将你之前修改的规则写入其中:
    <If "%{REQUEST_URI} =~ m#^/XXX/(index|index_dev|upgrade/upgrade).php#">
        # 这里添加对应的规则内容(比如原.htaccess中该If块内的代码)
    </If>
    

Mautic更新只会覆盖自身生成的.htaccess文件,不会触碰这个独立的配置文件。

2. 配置Mautic自动生成适配子目录的.htaccess

修改Mautic的配置文件,让它在更新时自动生成包含子路径的规则:

  • 找到Mautic安装目录下的app/config/local.php文件,添加或修改以下配置:
    $config['site_url'] = 'https://www.primeogroup.com/XXX';
    $config['webroot'] = 'XXX';
    

这样Mautic在更新时会根据配置的站点URL自动生成适配子目录的.htaccess规则,无需手动修改。

3. 改用Apache虚拟主机配置替代.htaccess

如果你有服务器管理权限,直接在Apache的虚拟主机配置中添加规则,完全绕过.htaccess的限制:

  • 打开你的虚拟主机配置文件(通常在/etc/apache2/sites-available/或/etc/httpd/conf.d/目录下),添加以下配置:
    <Directory "/var/www/html/XXX">
        RewriteEngine On
        RewriteBase /XXX/
        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /XXX/index.php [L]
        # 加入你需要的<If>规则
        <If "%{REQUEST_URI} =~ m#^/XXX/(index|index_dev|upgrade/upgrade).php#">
            # 对应的规则内容
        </If>
    </Directory>
    

保存后重启Apache服务,规则直接生效,不受Mautic更新影响。

4. 自动脚本修复(兜底方案)

如果以上方法都不适用,可以写一个简单的Shell脚本,在Mautic更新后自动修复.htaccess:

  • 创建脚本文件fix-mautic-htaccess.sh:
    #!/bin/bash
    # 替换为你的.htaccess文件路径
    HTACCESS_PATH="/path/to/your/.htaccess"
    # 替换规则中的路径
    sed -i 's/^<If "%{REQUEST_URI} =~ m#^\/(index/<If "%{REQUEST_URI} =~ m#^\/XXX\/(index/' "$HTACCESS_PATH"
    
  • 赋予脚本执行权限:chmod +x fix-mautic-htaccess.sh
  • 更新Mautic后运行这个脚本,或者设置定时任务定期检查修复。

内容的提问来源于stack exchange,提问作者AFA Med

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 05:58:25