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
相关产品推荐
相关产品推荐

