在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>

相關文章
相關標籤/搜索