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

Laravel配置/*路由到控制器时,访问/javascript路径返回403 Forbidden的问题咨询

Laravel配置/*路由到控制器时,访问/javascript路径返回403 Forbidden的问题咨询

嗨,我来帮你分析下这个问题~你遇到的这种情况其实挺常见的,核心原因是Web服务器(不管是Apache还是Nginx)的默认配置,在请求到达Laravel路由解析环节之前就拦截了它,导致请求没走到你的控制器里。下面分两种服务器环境给你具体的解决办法:

Apache环境

Apache自带的mod_dir模块会自动尝试寻找和请求路径同名的目录,哪怕这个目录实际不存在,它也会触发目录列表的权限检查,最终返回403 Forbidden。你可以通过修改项目根目录下的.htaccess文件来解决:

  1. 首先在.htaccess中添加一行禁用目录列表的规则,确保请求不会因为目录检查被拦截:
Options -Indexes
  1. 同时确保你的.htaccess里的重写规则是标准的Laravel配置,保证所有非文件/非目录的请求都转发到index.php处理,完整的.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>

Nginx环境

如果你的项目部署在Nginx上,问题大概率出在try_files的配置上。默认配置里的$uri/会让Nginx尝试访问对应目录,即使目录不存在也会触发权限检查。你可以调整server块里的配置:

将原来的:

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

修改为:

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

去掉$uri/后,Nginx就不会再尝试查找对应目录,直接把非文件的请求交给Laravel的index.php处理,这样你的/{slug}路由就能正常捕获/javascript请求了。

最后别忘了,修改完配置后重启对应的Web服务器(Apache或Nginx),让新配置生效哦~

备注:内容来源于stack exchange,提问作者Asif Shahzad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 12:08:14