博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
laravel 没有route.php,关于Laravel Route重定向的一个注意点
阅读量:5146 次
发布时间:2019-06-13

本文共 1605 字,大约阅读时间需要 5 分钟。

发现问题

最近在做项目发现一个奇怪的现象,我的路由配置里有如下配置:

Route::group(array('prefix'=>'admin','before'=>'adminauth'),function(){

// 管理员登录

Route::get('/',function(){

return Redirect::to('admin/login');

});

Route::get('login','UserController@adminLogin');

}

目的是无论用户输入”admin”,还是”admin/login”都能跳转到登录界面。然而现实情况是输入”admin”之后,浏览器会无限重定向,firebug记录如下:

GET /public/admin/ 301 Moved Permanently

GET admin 301 Moved Permanently

GET admin 301 Moved Permanently

GET /public/admin/ 301 Moved Permanently

GET admin 301 Moved Permanently

GET /public/admin/ 301 Moved Permanently

GET admin 301 Moved Permanently

....

经过一番搜索后试验,终于得出结论,问题有两点:

1.public目录下正好有个admin目录,存放后台相关js和css

2.laravel自带的.htaccess的这样一条规则:

RewriteEngine On

# Redirect Trailing Slashes...

RewriteRule ^(.*)/$ /public/$1 [L,R=301] #注意这条

# Handle Front Controller...

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^ index.php [L]

解释一下原理:

访问public/admin目录时,apache会自动转成”public/admin/”的形式,而这种形式正好符合重写的规则,又被重写回”public/admin”的形式。因为public/admin目录确实存在,所以请求根本不会到达index.php。

所以故事就是这样,因为301那条规则的存在,无限重定向产生了。

解决方案:

1.不要把public目录下已有的目录名做为路由地址

2.301规则前加一条”RewriteCond %{REQUEST_FILENAME} !-d”,但是这样会使该目录被直接访问。建议生产环境中关掉apache的autoindex模块(呃,我发现我用的wamp关掉这个模块apache就启动不了了- -!)。

补充:

经过一些实验,建议将.htaccess文件改成如下:

RewriteEngine On

# Redirect Trailing Slashes...

RewriteCond %{REQUEST_FILENAME} !-d #防止真实目录导致循环重定向

RewriteRule ^(.*)/$ /public/$1 [L,R=301]

# Handle Front Controller...

#RewriteCond %{REQUEST_FILENAME} !-d #防止用户直接打开真实目录

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^ index.php [L]

总结

以上就是关于Laravel Route重定向的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

转载地址:http://etznv.baihongyu.com/

你可能感兴趣的文章
xpath
查看>>
parted分区
查看>>
图片标签img
查看>>
表哥的Access入门++以Excel视角快速学习数据库知识pdf
查看>>
TC 配置插件
查看>>
关于异步reset
查看>>
索引优先队列的工作原理与简易实现
查看>>
并发编程简介
查看>>
wow 各职业体验(pvp)
查看>>
字符串的操作
查看>>
性能优化之Java(Android)代码优化
查看>>
由Oracle 11g SYSAUX 和 SYSTEM 表空间回收引发的联想
查看>>
欲则不达
查看>>
盒子游戏
查看>>
Jmeter + Grafana搭建实时监控可视化
查看>>
uCGUI字符串显示过程分析和uCGUI字库的组建
查看>>
h5唤起app
查看>>
SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件
查看>>
处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“Manag
查看>>
01: socket模块
查看>>