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

Laravel路由问题:Apache本地环境无法访问.blade.php页面

解决Laravel在Apache下路由无法访问的问题

原因分析

Apache默认未启用URL重写模块,也未允许项目目录通过.htaccess解析路由规则,导致除默认首页外的其他路由无法被识别。而php artisan serve内置的服务器已自动处理路由重写逻辑,因此能正常访问。

解决方案

1. 启用Apache的mod_rewrite模块

在终端执行命令:

sudo a2enmod rewrite

2. 配置项目目录权限

确保Laravel项目的存储和缓存目录拥有正确权限,避免权限阻碍路由加载:

sudo chown -R www-data:www-data /path/to/your/project
sudo chmod -R 755 /path/to/your/project/storage
sudo chmod -R 755 /path/to/your/project/bootstrap/cache

将/path/to/your/project替换为你实际的项目路径。

3. 修改Apache站点配置

编辑Apache默认站点配置文件(如果使用虚拟主机则编辑对应虚拟主机文件):

sudo nano /etc/apache2/sites-available/000-default.conf

在<VirtualHost *:80>块内,找到DocumentRoot对应的路径(需指向项目的public目录),添加以下配置:

<Directory /path/to/your/project/public>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>

将/path/to/your/project/public替换为实际的public目录路径。

4. 确保public目录的.htaccess文件有效

Laravel的public目录默认带有.htaccess文件,若缺失可手动创建,内容如下:

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

    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]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

5. 重启Apache服务

使所有配置生效:

sudo systemctl restart apache2

完成以上操作后,访问localhost/project/public/users即可正常加载页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:05:26