php - 防止 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.php
并laravelapp/
按照 default访问Route::get('/', ..
。但同样的页面也可以通过laravelapp/index.php
. 如果您不希望在应用 URL 中添加扩展名,这是一种预期和可接受的行为吗?显然,如果这是不受欢迎的行为,那么即使有 .htaccess 修复,Apache Mod 重写也不是罪魁祸首。
解决方案
把它写在你的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]
推荐阅读
- php - 如何在php中将一串数字和运算符转换为最终数字
- python-3.x - 如何考虑数字左侧的零?Python
- python - 如何在熊猫中将小时合并到 YMD DateTimeIndex
- android - 在运行时加载 Flutter 插件
- postgresql - (Postgresql)如何将表情符号(或表情符号)转换为其 unicode 表示
- android - Android Studio 默认公司名称
- android - Fragment.viewLifecycleOwnerLiveData.observe 不使用 kodein 调用
- python - 在python中创建子类时是否需要调用super()?
- javascript - 使用 JavaScript 动态创建表的条件格式
- excel - 希望循环遍历表并将第一列和第二列以及第八列和第九列的值返回到不同的工作表