Laravel路由跳转页面锚点时URL带public,如何正确配置?
解决Laravel路由跳转至Blade模板特定锚点的问题
问题根源
你遇到的URL出现/public的问题,主要来自两个方面:
.env文件中APP_URL配置错误- 锚点拼接的写法有误
具体解决方案
1. 修正.env文件的APP_URL配置
打开项目根目录下的.env文件,找到APP_URL项,确保它设置为你的实际域名,不要包含/public:
APP_URL=https://my-domain-name
修改后建议清除配置缓存,确保修改生效:
php artisan config:clear
2. 正确拼接锚点
不要在route()函数结果后加/#cms,直接将锚点#cms拼接在路由生成的URL后面即可,正确的Blade写法是:
{{ route('services') }}#cms
这样生成的URL就是https://my-domain-name/services#cms,可以直接跳转到services页面的cms锚点位置。
额外排查点
如果修改.env后仍出现/public,需要检查Web服务器(Apache/Nginx)的配置,确保服务器根目录指向Laravel项目的public文件夹,而非项目根目录。比如Nginx配置里的root应设为/path/to/your/project/public,Apache则需将DocumentRoot指向public目录。
内容的提问来源于stack exchange,提问作者user2955335
相关产品推荐
相关产品推荐

