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

Laravel 5.5中/resources路由返回403禁止访问问题求助

解决Laravel 5.5中/resources路由返回403的问题

嘿,这个问题不是Laravel本身禁止设置/resources路由,而是服务器配置或项目结构的小冲突导致的,下面是具体的排查和解决步骤:

1. 检查是否存在同名物理目录

Laravel项目根目录下的resources文件夹本来不在web可访问的public目录里,但如果你不小心在public下创建了resources文件夹,或者服务器根目录配置错了(指向了项目根而非public),服务器会优先尝试访问这个物理目录,而不是交给Laravel路由处理。

  • 先去public目录看看,要是有resources文件夹,直接删掉或者重命名它。
  • 确认服务器的web根目录是指向Laravel项目的public目录,别搞错成项目根目录了。

2. 修复Apache的.htaccess规则(用Apache的话)

Laravel自带的.htaccess文件在public目录下,可能需要确认规则是否让所有请求都走index.php:

打开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>

重点看最后三条:当请求的路径不是物理目录(!-d)也不是物理文件(!-f)时,就转发到index.php,这样Laravel路由就能接管/resources的请求了。

3. 检查Nginx配置(用Nginx的话)

如果是Nginx服务器,确保配置文件里把非静态请求都转给index.php:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

这条规则会先检查请求的路径是不是存在的文件或目录,要是不是,就交给Laravel处理,这样/resources路由就能正常工作了。

4. 清除路由缓存

有时候路由缓存会导致新添加的路由不生效,执行这条命令清一下缓存:

php artisan route:clear

Laravel 5.5里路由缓存主要在生产环境生效,但如果你之前执行过route:cache,哪怕是开发环境也得清缓存才能看到新路由。

5. 确认路由已注册

执行这条命令看看所有已注册的路由,确认/resources在列表里:

php artisan route:list

要是列表里没有,说明你可能把路由加错文件了(默认是routes/web.php),或者有路由分组的限制(比如中间件、域名过滤),得检查一下。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:34:05