一 、URL重寫作用
實現僞靜態
圖片防盜鏈
自定義404錯誤頁面
二、重寫模塊開啓
apache的配置文件httpd.conf文件中開啓:
LoadModule rewrite_module modules/mod_rewrite.so
三、在哪兒配置重寫規則?作用範圍有何不同
1) 可以使用在Apache主配置文件httpd.conf中(服務器級別,適用於擁有管理權限的服務器)
2) 可以使用在httpd.conf裏定義的虛擬主機配置中
3) 可以使用在配置文件.htaccess中 (目錄級別,適用於沒有管理權限的虛擬主機)
上託管等等條件下,你無法改寫主配置文件,然而你可以對你的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.