首页 > 解决方案 > 防止 laravel 在 URL 中接受 index.php

问题描述

使用后Route::get('/', ContnameController@methodName,如何让 Laravel(5.8 及以上)myapp/index.php在地址栏中使用时显示其默认的 404 页面?换句话说:当使用替代路由访问同一文件时,如何防止 Laravel 显示扩展名为.php的文件?

Apache Mod Rewrite 已启用,并且没有与之相关的问题。与它相关的一切工作正常,所有请求都按预期定向到 index.php。我只是不希望用户使用myapp/index.php而不是我在Route::get('/',.... Laravel 似乎可以互换对待两者!

这不是 Apache Mod 重写问题的副本。现在默认的(开箱即用的)Laravel 主页被拉出welcome.blade.phplaravelapp/按照 default访问Route::get('/', ..。但同样的页面也可以通过laravelapp/index.php. 如果您不希望在应用 URL 中添加扩展名,这是一种预期和可接受的行为吗?显然,如果这是不受欢迎的行为,那么即使有 .htaccess 修复,Apache Mod 重写也不是罪魁祸首。

标签: phplaravelroutes

解决方案


把它写在你的public\.htaccess文件中,就RewriteEngine On在行之后

RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php[^/] /$1? [L,R=302,NC,NE]

RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php(?:/(.*))?$ /$1$2? [L,R=302,NC,NE]

推荐阅读