我在routes/wen.php中定义了以下路由:
我访问public/index.php 时可以正常进入Index控制器中的Index方法,这个时候我的域名是:127.0.0.1/Laravel/public , 因为apache配置,所以默认打开了index.php 只在在域名中没有显示,
但是我定义了第二个路由,也就是根目录下的user 这个时候我再次访问 127.0.0.1/Laravel/public/user
结果出现以下错误
当我把index.php 加上变成了 127.0.0.1/Laravel/public/index.php/user 此时正常访问,不明白为什么,
为什么我看视频教程中别人都是直接访问的,不需要加上index.php
添加路由重定向
Apache
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
nginx
你访问的127.0.0.1/Laravel/public
其实完整的是127.0.0.1/Laravel/public/index.php
为什么我看视频教程中别人都是直接访问的,不需要加上index.php
为了使路由更美观,大多数网站都会选择隐藏 index.php ,具体的配置方法可以看 laravel 文档
当我把index.php 加上变成了 127.0.0.1/Laravel/public/index.php/user,此时正常访问,不明白为什么
因为你使用的这个web框架是采用了 mvc 模式,mvc的关键就是单一入口,所有操作都依赖这个index.php文件后面的/user
你可以理解为参数