Web服務器 Apache URL重寫

一 、URL重寫作用

實現僞靜態

圖片防盜鏈

自定義404錯誤頁面


二、重寫模塊開啓

apache的配置文件httpd.conf文件中開啓:

LoadModule rewrite_module modules/mod_rewrite.so

、在哪兒配置重寫規則?作用範圍有何不同

      1) 可以使用在Apache主配置文件httpd.conf中(服務器級別,適用於擁有管理權限的服務器)

      2) 可以使用在httpd.conf裏定義的虛擬主機配置中

      3) 可以使用在配置文件.htaccess中 (目錄級別,適用於沒有管理權限的虛擬主機) 
   

       假如你對你的的網站內容所在的服務器沒有管理員權限,或者你的網站放在ISP的服務器
      上託管等等條件下,你無法改寫主配置文件,然而你可以對你的WEB站點內容所在的目錄
      有寫權限,則你可以設置自己的.htaccess文件達到同樣的目的。
      但你需要確定主配置文件中對你的網站所在的目錄定義了下面的內容: 
     Options Indexes FollowSymLinks 
     AllowOverride all 
      否則你的.htaccess不會工作。 


、重寫舉例

1) 隱藏Apache下的某個目錄,使得對該目錄的任何請求都重定向到另一個文件。

a) httpd.conf的實現方法 

虛擬主機配置示例:

<VirtualHost *:80>
    #網站目錄,如果在www目錄下的php目錄,下面    #就填寫F:/www/php
    DocumentRoot "D:/WALP/www" 
    #域名
    ServerName www.plqjnet.com
    #這裏配置歡迎首頁面
    DirectoryIndex index.html index.htm index.php
    <Directory />
    Options FollowSymLinks
    #不允許別人修改我們的頁面
    AllowOverride None
    #設置訪問權限
    order allow,deny
    Allow from all
    </Directory>   
</VirtualHost>



我們放下面的部分到/usr/local/apache/conf/httpd.conf :
      options Indexes followsymlinks 
      allowoverride all 
      rewriteengine on 
      rewritebase / 
      rewriterule ^(.*)$ index.html.en [R=301] 


      注:rewriteengine on 爲重寫引擎開關,如果設爲off,則任何重寫規則定義將不被應
      用,該開關的另一好處就是如果爲了臨時拿掉重寫規則,則改爲off再重啓動Apache即
      可,不必將下面一條條的重寫規則註釋掉。 
      rewritebase / 的作用是如果在下面的rewriterule定義中被重寫後的部分(此處爲文件
      名index.html.en)前面沒有/,則是相對目錄,相對於這個rewritebase後面的定義也就
      是/usr/local/apache/htdocs/index.html.en,否則,如果此處沒有rewritebase /這
      一項,則被重寫成http://192.168.1.56/usr/local/apache/htdocs/manual/index.html.en,
      顯然是不正確的。 


      不過這裏我們也可以不用rewritebase / , 而改爲: 
      rewriteengine on 
      rewriterule ^(.*)$ /index.html.en [R=301] 
      或者 
      rewriteengine on 
      rewriterule ^(.*)$ http://192.168.1.56/index.html.en [R=301] 


b> .htaccess的實現方法 


      我們先放下面的部分到httpd.conf:
      options Indexes followsymlinks 
      AllowOverride all 


      然後放下面的部分到/usr/local/apache/htdocs/manual/.htaccess中 
      rewriteengine on 
      rewritebase / 
      rewriterule ^(.*)$ index.html.en [R=301] 


     注:對文件.htaccess所作的任何改動不需要重啓動Apache. 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章