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

Laravel Inertia Vue部署Apache子目录路径重复问题求助

解决方案

1. 修正Apache虚拟主机配置

你的虚拟主机配置中,Directory指令指向了项目根目录,但Alias已经将/myapp映射到public目录,这会导致权限和重写规则作用路径不匹配。修改为:

#Settings for myapp
Alias /myapp /var/www/html/myapp/public
<Directory /var/www/html/myapp/public>
    AllowOverride All
    Options -Indexes
    Require all granted
</Directory>

2. 调整public/.htaccess文件

添加规则自动移除重复的/myapp前缀,同时确保Laravel重写规则正常工作:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # 重定向带重复/myapp的请求到正确路径
    RewriteCond %{REQUEST_URI} ^/myapp/myapp/(.*)$
    RewriteRule ^ /myapp/%1 [L,R=301]

    RewriteBase /myapp/

    # Laravel默认路由重写
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

3. 修正Laravel环境配置

在项目根目录的.env文件中设置正确的应用URL:

APP_URL=http://localhost/myapp

执行命令清除配置缓存:

php artisan config:clear
php artisan cache:clear

4. 配置Vue/Inertia路由基础路径

由于部署在子目录下,需要让Vue路由知晓基础路径。修改路由配置文件(通常是resources/js/router/index.js):

import { createRouter, createWebHistory } from 'vue-router';

const router = createRouter({
    // 设置路由历史的基础路径
    history: createWebHistory('/myapp/'),
    routes: [
        // 你的路由定义
    ]
});

export default router;

最后重启Apache服务

sudo systemctl restart apache2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:23:13