thinkphp5.0URL访问

URL设计

ThinkPHP5.0在没有启用路由的情况下典型的URL访问规则是:

http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/参数值...]

支持切换到命令行访问,如果切换到命令行模式下面的访问规则是:

>php.exe index.php(或者其它应用入口文件) 模块/控制器/操作/[参数名/参数值...]

可以看到,无论是URL访问还是命令行访问,都采用PATH_INFO访问地址,其中PATH_INFO的分隔符是可以设置的。

注意:5.0取消了URL模式的概念,并且普通模式的URL访问不再支持,如果不支持PATHINFO的服务器可以使用兼容模式访问如下:

http://serverName/index.php(或者其它应用入口文件)?s=/模块/控制器/操作/[参数名/参数值...]

必要的时候,我们可以通过某种方式,省略URL里面的模块和控制器。

URL大小写

默认情况下,URL是不区分大小写的,也就是说 URL里面的模块/控制器/操作名会自动转换为小写,控制器在最后调用的时候会转换为驼峰法处理。

例如:

http://localhost/index.php/Index/Blog/read
// 和下面的访问是等效的
http://localhost/index.php/index/blog/read

如果访问下面的地址

http://localhost/index.php/Index/BlogTest/read
// 和下面的访问是等效的
http://localhost/index.php/index/blogtest/read

在这种URL不区分大小写情况下,如果要访问驼峰法的控制器类,则需要使用:

http://localhost/index.php/Index/blog_test/read

如果希望URL访问严格区分大小写,可以在应用配置文件中设置:

// 关闭URL中控制器和操作名的自动转换
‘url_convert‘    =>  false,

一旦关闭自动转换,URL地址中的控制器名就变成大小写敏感了,例如前面的访问地址就要写成:

http://localhost/index.php/Index/BlogTest/read

但是下面的URL访问依然是有效的:

http://localhost/index.php/Index/blog_test/read

下面的URL访问则无效:

http://localhost/index.php/Index/blogtest/read

需要注意:路由规则中定义的路由地址是按照控制器名的实际名称定义(区分大小写)。

隐藏入口文件

在ThinkPHP5.0中,出于优化的URL访问原则,还支持通过URL重写隐藏入口文件,下面以Apache为例说明隐藏应用入口文件index.php的设置。

下面是Apache的配置过程,可以参考下:
1、httpd.conf配置文件中加载了mod_rewrite.so模块
2、AllowOverride None 将None改为 All 
3、在应用入口文件同级目录添加.htaccess文件,内容如下:

<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
时间: 2024-08-28 13:17:01

thinkphp5.0URL访问的相关文章

ThinkPHP5.0---URL访问

ThinkPHP 5.0 在没有启用路由的情况下典型的URL访问规则是(采用 PATH_INFO 访问地址): http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/参数值...] URL大小写: 默认情况下, URL 是不区分大小写的,也就是说 URL 里面的模块/控制器/操作名会自动转换为小写,控制器在最后调用的时候会转换为驼峰法处理. http://localhost/index.php/Index/BlogTest/read //

thinkphp5控制器访问转换问题

假设定义了HelloWorld控制器 url访问地址就是:http://localhost/index.php/index/hello_world,与此同时view目录下的模板文件夹要命名为hello_world,否则会提示找不到模板 如果你期望通过 http://localhost/index.php/index/HelloWorld 可以访问,那么必须关闭URL的自动转换设置 // 是否自动转换URL中的控制器和操作名 'url_convert' => false, 原文地址:https:/

thinkphp5访问报错 ...with message &#39;mkdir(): Permission denied&#39; in... 或...failed to open stream: Permission denied&#39; in...

报错截图1: 报错截图2: 报错原因没有权限访问thinkphp5/runtime目录. 解决方法: 1.如果thinkphp5/runtime目录下面有文件,先清空thinkphp5/runtime目录: 2.修改thinkphp5/runtime目录权限为可读可写. thinkphp5访问报错 ...with message 'mkdir(): Permission denied' in... 或...failed to open stream: Permission denied' in.

thinkphp5访问sql2000数据库

大家都知道php跟mysql是绝配,但是因为有时候工作需要,要求php访问操作sql2000,怎么办呢? 一般来说有两种方式: 1. sqlsrv驱动方式 2. odbc方式 sqlsrv驱动方式,因为微软公司原因,不提供sql2000的访问驱动,只提供了sql2005以上的驱动,所以如果你的数据库是2005以上版本,特别是sql2008r2,到微软官方可以下载到sql2008 for php的驱动,网上有很多文章介绍,我的博客里有篇文章 http://www.cnblogs.com/skyso

thinkphp5.0 +nginx在contos7下配置访问

Nginx vhost配置:server{listen 80;server_name lp.t1.com t1.com;index index.php;#根目录设置到Public下root /home/wwwroot/lp.t1.com/public; #定义变量 set $root /home/wwwroot/lp.t1.com/public; location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass unix:/tmp/php

thinkphp5资源路由访问404报错

解决办法:把public重定向 原文地址:http://blog.51cto.com/xuqin/2153164

thinkphp5三种URL访问模式

thp5 :URL路径格式: [1]path_info      /my/my/index [2]混合模式:即可以使用path_info,也可以使用路由模式,并不是对同一个操作方法.混和模式指的是:有两三个操作方法,一个使用path_info一个使用路由等 [3]强制使用路由模式 配置路由application/config.php 如果开发标准的api建议开启url_route_must // 是否强制使用路由 'url_route_must' => false, //默认不使用 项目www/

ThinkPHP5学习笔记(6)请求和响应

在线视频课程:http://www.kancloud.cn/tpshop/thinkphp5/220692 Request请求对象和Response响应对象 $_GET.$_POST.$_REQUEST.$_COOKIE 调用请求对象$request=Request::instance() $this->request或request()->url();助手函数 input()助手函数 响应格式 json xml 模板渲染 页面跳转 重定向 $this->success $this-&g

Thinkphp5笔记一:项目部署

系统:window 7 64位 Thinkphp版本:5.0.5 环境:wampserver集成 笔记分为两大部分,配置篇与数据库篇 一.虚拟主机部署/本地部署 在网站根目录下建立文件index.php,内容如下 <?php // 定义应用目录 define('APP_PATH', __DIR__ . '/apps/'); // 加载框架引导文件 require './thinkphp/start.php'; 这样基本上就可以了,这是最简单的配置. 二.服务器部署 服务器部署项目文件入口publ