您的位置 首页 > 数码极客

【url链接】简化你的URL,让链接简单清晰易分享

使用ThinkPHP开发时,如果使用默认配置,URL可能如下所示:

http://serverName/think

协议、域名、目录名称、门户、模块名称、控制器名称、操作名称、接收参数(/uid/1002/mode/edit)

图片来自网络

必须元素

在URL中,必须包含协议和域名,这是让浏览器能够定位到我们网站的关键,但是浏览器默认会使用http协议,所以我们直接输入localhost也可以正常访问。

可选元素

除了必选元素外的全是可选元素QAQ……

隐藏目录名

我们在创建项目的时候,是在Web跟目录下创建think目录,然后将ThinkPHP项目文件拷贝到think目录下的,所以当我们访问的时候需要加上think目录,如果我们想隐藏目录名,有两种解决方案:

  1. 直接将ThinkPHP放到Web根目录

    这种方法最简单粗暴,但是这样就限制住了你访问localhost只能进入一个项目,无法灵活部署多个项目。适合新手学习时使用。

  2. 使用Apache/nginx vhost 指定项目目录

    如果你有多个项目,可以配置hosts和vhost来使用本地域名重定向配合虚拟主机名(非虚拟机)来使用自定义域名访问指定项目,如、www.,由于使用本地域名重定向,所以即使你使用www.qq.com也只会访问到本地地址,而不会打开QQ官网。具体配置方法容小编后面再介绍。

此时,可以直接使用以下地址来访问开头的链接:

http://serverName

隐藏入口文件

入口文件即文章开头URL中的index.php,默认情况下,index.php会始终存在于链接中,但是又没有实际作用,我们可以通过URL重写来将入口文件隐藏。URL重写在Apache、Nginx下的配置方式不同,请注意区分。

Apache下配置URL重写

1.打开Apache配置文件,将mod_rewri前的#去掉,并重启Apache。

打开URL Rewrite

如果你使用的是phpStudy,那么在安装路径\Apache\conf下,如果你使用的是mac内置Apache,在/etc/apache2下,如果你使用的是WDCP,是默认开启的。

Mac重启Apache下使用命令sudo apachectl restart ,WDCP重启Apache在系统设置-服务重启-重启WEB。

2.在think目录下新建文件.htaccess文件,并输入以下内容:

<IfModule mod_rewri;

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$1 last;

}

}

重启Nginx即可。

此时,可以直接使用以下地址来访问开头的链接:

http://serverName/Home/User/profile/uid/1002

图片来自网络

隐藏模块名

绑定模块

如果你的项目下只有一个模块,可以使用绑定模块功能,直接在入口文件index.php中增加常量定义:

define('BIND_MODULE','Home');

设置默认模块

如果你拥有多个模块,直接使用绑定模块功能会使其他的模块无法访问,所以我们需要使用设置默认模块功能。

编辑Application\Common\Conf\con,添加以下配置,注意必须有允许列表才可以生效。

// 允许访问的模块列表

'MODULE_ALLOW_LIST' => array('Home','Admin');

'DEFAULT_MODULE' => 'Home', // 默认模块

此时,可以直接使用以下地址来访问开头的链接:

http://serverName/User/profile/uid/1002

图片来自网络

隐藏控制器名

其实一般很少存在只有一个控制器的项目,不过还是有可能性的(例如微信公众号后台),所以跟大家分享一下隐藏控制器名的方法。其实很简单,在con中添加'DEFAULT_CONTROLLER' => 'User'即可。如果只想对某个模块生效,可以放在模块目录下的配置文件中。

这样的话,我们的链接就变为了下面这样:

http://serverName/profile/uid/1002

路由

什么?还嫌不够简单?

http://serverName/p/1002

那这样够简单了吧?怎么实现的?当然是靠路由了,不过本章篇幅有限,下次再分享路由的知识,欢迎关注小编获取第一手信息。

图片来自网络

如果您觉得小编的教程对您有所帮助,请点击关注支持小编,您的关注是对小编最大的鼓励。

关于作者: admin

无忧经验小编鲁达,内容侵删请Email至wohenlihai#qq.com(#改为@)

热门推荐