编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

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

wxchong 2024-09-07 21:08:17 开源技术 8 ℃ 0 评论

我们在使用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目录,如果我们想隐藏目录名,有两种解决方案:

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

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

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

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

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

http://serverName/index.php/Home/User/profile/uid/1002

隐藏入口文件

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

Apache下配置URL重写

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

打开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

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

图片来自网络

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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表