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

同一Apache虚拟主机下多Laravel应用重写规则配置问题

解决方案

你遇到该问题的核心原因是重写基础路径(RewriteBase)配置错误,误将文件系统路径作为URL访问前缀,导致Laravel解析请求路径时保留了/larapp1前缀段,按以下步骤调整即可:

1. 修改Apache虚拟主机配置

将现有VirtualHost段的配置调整为如下内容:

<VirtualHost *:80>
    ServerName portal.com
    DocumentRoot /home/user/applications/portal

    Alias /larapp1 /home/user/applications/portal/larapps/larapp1/public
    <Directory /home/user/applications/portal/larapps/larapp1/public>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted

        RewriteEngine On
        # 修正RewriteBase为URL访问前缀,而非文件系统路径
        RewriteBase /larapp1/
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^.*$ index.php [L]
    </Directory>

    # 后续新增larapp2等应用,复制上述Alias和Directory段修改对应标识即可
    # Alias /larapp2 /home/user/applications/portal/larapps/larapp2/public
    # <Directory /home/user/applications/portal/larapps/larapp2/public>
    #     Options -Indexes +FollowSymLinks +MultiViews
    #     AllowOverride All
    #     Require all granted
    #     RewriteEngine On
    #     RewriteBase /larapp2/
    #     RewriteCond %{REQUEST_FILENAME} !-f
    #     RewriteCond %{REQUEST_FILENAME} !-d
    #     RewriteRule ^.*$ index.php [L]
    # </Directory>
</VirtualHost>

配置修改完成后执行systemctl reload apache2重载Apache配置生效。

2. 调整对应Laravel应用配置

进入对应Laravel应用的根目录,修改.env文件,补充带前缀的访问地址配置:

APP_URL=http://portal.com/larapp1
ASSET_URL=http://portal.com/larapp1

修改完成后执行php artisan config:cache清空配置缓存即可。

完成上述调整后,访问http://portal.com/larapp1/foo就可以直接匹配Route::get('/foo',...)定义的路由,不需要额外加前缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:45:03