如果有使用第三方框架做項目時,url路徑是可以同過框架給的方法來設定的(如thinkphp),但如果使用原生php寫的項目又想重寫url,則可通過apache的一些設置來達到想要的效果。
在更改apache的配置之前,應該先了解一些apache的知識:apache中的Directory標簽的作用是用於標記我們如何在特定目錄訂制apache的行為。該標簽里會有一個絕對路徑,該路徑就是你想訂制行為的目錄。
總體通過apache修改URL的思路就是,在.htaccess文來中對你想要重寫的url地址進行重寫。步驟如下:
(1)現在服務器的httpd.conf文件中開啟重寫.htaccess的權限,將下列代碼添加到httpd.conf文件中
<Directory ".htaccess文件所在路徑">
AllowOverride All
</Directory>
(2)關於.htaccess文件的存放位置:假如你之前的訪問路徑為:域名/car_project/index.php
明顯,這個路徑訪問的是car_project文件夾中的index.php文件,所以你要是想重寫該路徑,你就應該將.htaccess文件放到car_project文件夾中。
(3)之后再將.htaccess文件將里面的重寫引擎開啟,在. htaccess文件中加入下列代碼
<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>