若是有使用第三方框架作项目时,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>