我们在使用ThinkPHP开发时,如果使用默认配置,那么我们的URL可能是这样的:
http://serverName/think/index.php/Home/User/profile/uid/1002
这么一长串URL里面包含协议、域名、目录名、入口、模块名、控制器名、操作名、传入的参数(/uid/1002/mode/edit),今天小编就和大家分享如何让URL变得简单清晰。
图片来自网络
必须元素在URL中,必须包含协议和域名,这是让浏览器能够定位到我们网站的关键,但是浏览器默认会使用http协议,所以我们直接输入localhost也可以正常访问。
可选元素除了必选元素外的全是可选元素QAQ……
隐藏目录名我们在创建项目的时候,是在Web跟目录下创建think目录,然后将ThinkPHP项目文件拷贝到think目录下的,所以当我们访问的时候需要加上think目录,如果我们想隐藏目录名,有两种解决方案:
直接将ThinkPHP放到Web根目录
打开URL Rewrite
如果你使用的是phpStudy,那么httpd.conf在安装路径\Apache\conf下,如果你使用的是mac内置Apache,在/etc/apache2下,如果你使用的是WDCP,是默认开启的。
Mac重启Apache下使用命令sudo apachectl restart ,WDCP重启Apache在系统设置-服务重启-重启WEB。
2.在think目录下新建文件.htaccess文件,并输入以下内容:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
Nginx下配置URL重写
在nginx.conf中添加以下内容:
location /youdomain/ {
if (!-e $request_filename){
rewrite ^/youdomain/(.*)$ /youdomain/index.php?s=$1 last;
}
}
重启Nginx即可。
此时,可以直接使用以下地址来访问开头的链接:
http://serverName/Home/User/profile/uid/1002
图片来自网络
隐藏模块名绑定模块
如果你的项目下只有一个模块,可以使用绑定模块功能,直接在入口文件index.php中增加常量定义:
define('BIND_MODULE','Home');
设置默认模块
如果你拥有多个模块,直接使用绑定模块功能会使其他的模块无法访问,所以我们需要使用设置默认模块功能。
编辑Application\Common\Conf\config.php,添加以下配置,注意必须有允许列表才可以生效。
// 允许访问的模块列表
'MODULE_ALLOW_LIST' => array('Home','Admin');
'DEFAULT_MODULE' => 'Home', // 默认模块
此时,可以直接使用以下地址来访问开头的链接:
http://serverName/User/profile/uid/1002
图片来自网络
隐藏控制器名其实一般很少存在只有一个控制器的项目,不过还是有可能性的(例如微信公众号后台),所以跟大家分享一下隐藏控制器名的方法。其实很简单,在config.php中添加'DEFAULT_CONTROLLER' => 'User'即可。如果只想对某个模块生效,可以放在模块目录下的配置文件中。
这样的话,我们的链接就变为了下面这样:
http://serverName/profile/uid/1002
路由什么?还嫌不够简单?
http://serverName/p/1002
那这样够简单了吧?怎么实现的?当然是靠路由了,不过本章篇幅有限,下次再分享路由的知识,欢迎关注小编获取第一手信息。
图片来自网络
如果您觉得小编的教程对您有所帮助,请点击关注支持小编,您的关注是对小编最大的鼓励。,