在很多情况下我们需要实现重定向的功能,比如为了安全性,隐藏项目实际目录,或者为了更好地进行SEO。Apache提供了重定向模块,可以根据需要改变外部的URL。
要使用Apache的重定向功能,首先要知道如何定制Apache的模块功能。在Apache的安装目录下的conf文件夹中,有一个全局配置文件httpd.conf,该配置文件只会在每次Apache启动的时候才会被读取,还有一个配置文件是.htaccess,在一个项目中,这个文件可以不存在,它用于重写所在目录及其子目录中的Apache行为活动,每次在该文件所在目录的请求都会读取它,当没有该需求时,即使用Apache的默认配置,该文件无效。http.conf比httaccess的权重更高,前者规范后者的行为,只有前者允许对某些行为进行重写,.htaccess才有效。
在当前案例中,我们需要http.conf中允许对.htaccess所在目录及其子目录拥有权限、文件控制。
前提准备
设项目根目录为E:/blog,在根目录中新建文件夹test,再在test下新建php文件index.php,index.php中包含以下代码:
安装好Apache服务器,建议使用xampp集成安装包。
步骤一
在http.conf中添加如下配置:
AllowOverride AuthConfig FileInfo
步骤二
在E:\blog目录下新建文本文件,再另存为.htaccess,写入如下内容:
RewriteEngine on
RewriteBase /test/
RewriteRule ^index/([0-9]+)/?$ index.php?id=$1
其中:
RewriteBase /test/是表示会基于/test目录重写地址
RewriteRule ^index/([0-9]+)/?$ index.php?id=$1是表示当以 ’http://www.example.com/index/数字‘ 的格式访问服务器时,会重写为 ’http://www.example.com/index.php?id=数字‘ 。
步骤三
在浏览器中打开”http://www.example.com/index/23“,页面将会显示23
,即成功实现http://www.example.com/index/23到http://www.example.com/test/index.php?id=23的重写。
领取专属 10元无门槛券
私享最新 技术干货