在Apache中使用mod_rewrite模塊重寫URL


如果有使用第三方框架做項目時,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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM