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