在Apache中使用mod_rewrite模块重写URL

若是有使用第三方框架作项目时,url路径是能够同过框架给的方法来设定的(如thinkphp),但若是使用原生php写的项目又想重写url,则可经过apache的一些设置来达到想要的效果。php

 

在更改apache的配置以前,应该先了解一些apache的知识:apache中的Directory标签的做用是用于标记咱们如何在特定目录订制apache的行为。该标签里会有一个绝对路径,该路径就是你想订制行为的目录。正则表达式

 

整体经过apache修改URL的思路就是,在.htaccess文来中对你想要重写的url地址进行重写。步骤以下:thinkphp

 

(1)如今服务器的httpd.conf文件中开启重写.htaccess的权限,将下列代码添加到httpd.conf文件中apache

<Directory ".htaccess文件所在路径">服务器

  AllowOverride All框架

</Directory>ide

 

(2)关于.htaccess文件的存放位置:假如你以前的访问路径为:域名/car_project/index.phpurl

  明显,这个路径访问的是car_project文件夹中的index.php文件,因此你要是想重写该路径,你就应该将.htaccess文件放到car_project文件夹中。域名

 

(3)以后再将.htaccess文件将里面的重写引擎开启,在. htaccess文件中加入下列代码it

<IfModule mod_rewrite.c>

RewriteEngine on

</IfModule>

 

(4)以后咱们须要在IfModule标签中设定“重定向匹配须要应用的URL基本地址”,指令为RewriteBase,例子以下:

RewriteBase /demo/

而咱们如今正在使用的地址是:http://localhost/demo/

 

(5)在IfModule标签里写入RewriteRule指令后,就能够对url进行重写了,好比能够在标签中加入下列代码:

RewriteRule somepage.php otherpage.php

这表明任何人访问somepage.php页面,实际显示的是otherpage.php页面

同理,咱们还能够使用正则表达式来对输入URL参数的方式进行重写(在这就不对正则表达式进行展开详解了)

 

(6)如此,如今httpd.conf文件和.htaccess文件中应该有以下实例代码:

httpd.conf文件中:

<Directory ".htaccess文件所在绝对路径">

  AllowOverride All

</Directory>

 

.htaccess文件中:

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteBase /demo/

RewriteRule somepage.php otherpage.php

</IfModule>

相关文章
相关标签/搜索