


Apache服務器中URL Rewrite技術
Apache不愧為一款全球著名的web服務器軟件。它的功能非常強大,其實我們日常需要用到的功能,apache都提供了,只不過需要我們熟練掌握它的配置方法。其中非常有用的一項技術叫做“URL Rewrite”,首先提一下,如果想發揮URL rewrite技術的強大功能,你必須精通正則表達式,因為歸根結底,URLRewrite引擎就是一個過濾器,你需要使用正則表達式來告訴服務器你的過濾規則了!!前天的時候由于項目中涉及到這方面的內容,所以研究了一下,在這把常用的幾種用途示例寫出來,希望能夠起到拋磚引玉的作用!(呵呵,其實我一直不明白,拋出磚頭去,怎么能引回玉來呢?)
1> From Static to Dynamic (網頁靜態化)
這項技術其實很常見的。你想,如果各大門戶網站為每一條新聞都要創建一個靜態網頁的話,年長日久,能有多少網頁文件啊!!!況且不說存儲限制,管理起來也很難。其實他們都采用了網頁靜態化的技術。比如你查看新華網上的http://www.xinhuanet.com/2006/1234.html 頁面,看起來你訪問的是一個靜態網頁,其實apache可以自動把它轉化成一個動態頁面,比如http://www.xinhuanet.com/2006/news.php?id=1234,呵呵,知道了吧,這樣多簡單,網站管理人員根本不需要為每條新聞寫一張網頁,只要把它錄入數據庫即可。當用戶訪問時,服務器會自動動態生成相應的頁面。 下面說一下具體的代碼:
RewriteEngine on
RewriteBase /2006/
RewriteRule ^([0-9]+)\.html$ news.php?id=$1 [T=application/x-httpd-php]
至于RewriteBase 和RewriteRule指令的用法請參考apache文檔。
2>借助于referer來實現防盜鏈功能
前面已經說過,基于referer的檢測是不可靠的,但也是行之有效的。這里把代碼給大家解釋一下:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.yoursitename.com/ [NC]
RewriteRule .*\.gif$ - [F]
上面的代碼將會阻止你網站上的所有的圖片被盜鏈。RewriteCond表示在什么條件下應用RewriteRule指定的重寫規則。在這里,兩條RewriteCond指令實際上指定如果referer的值不以"http://www.yoursitename.com/ 開頭,則應用下面RewriteRule指定的規則,而這里RewriteRule指令的含義就是返回無效地址,拒絕用戶的請求。如果你想要警告一下盜鏈的人,你可以在這里返回一個小圖片,提示它們“嚴禁盜鏈”!! 呵呵,讀到這里,相信你對平時在論壇看到的“防盜鏈”圖片幕后的機制已經很清楚了吧!!這些都得歸功于apache!!
3> 過濾訪問者IP地址
我曾經以為過濾訪問IP地址是防火墻或網關做的,比如南開影視,在校外就訪問不了!到底怎么實現的呢??其實大多數是apache服務器對訪問者IP進行了過濾,而不是網關。因為你服務器的管理員不一定就能控制了網關啊!再說在服務器上設置過濾規則要靈活方便的多。具體怎么設置,使用URL Rewrite技術就可以,但經過對比,我推薦大家另外一種好辦法:那就是通過設置.htaccess文件!使用.htaccess文件可以靈活地對每一個文件夾進行控制!!
比如我不想某個政府部門訪問到我的站點的內容,那可以通過在.htaccess中加入該部門的IP而將它們拒絕在外。例如:
order allow,deny
deny from 210.10.56.32
deny from 219.5.45.
allow from all
第二行拒絕某個IP,第三行拒絕某個IP段,也就是219.5.45.0~219.2.45.255 ,呵呵,想要拒絕所有人?用deny from all好了。你不止可以用IP地址,也可以用相應網站的域名來設定。
4> 多臺服務器負載平衡
你想,163的web服務器肯定不止一臺(其實100臺也不止),但我們輸入的地址永遠都是www.163.com ,具體如何在多臺服務器之間平衡負載?? 有很多種辦法,一般都是在DNS服務器上做手腳,其實借助URL Rewrite技術也可以實現同樣的功能! 但由于性能方面可能會受影響,這種方法并不是很常用,在這里也不再贅述,請大家直接參考apache的文檔!
最后,說一下別的兩件事:第一,今天弄清楚了lqqm上把鼠標移到圖片上就出現“發送圖片到手機”標簽的實現原理。它實際上完全是借助于 java,我再次感覺到java的功能并不能小瞧。請不要拿它去跟C++/Java/C#作比較,大家還記得“長頸鹿和羊”的故事吧,它們各有所長,誰都取代不了誰!在代碼中,它首先通過document.images數組來獲得當前頁面中的所有圖片對象,然后再為這些對象的 onmouseover事件加上響應函數。在響應函數中使用createElement來創建“發送圖片到手機”標簽,然后使用 insertAdjacentElement函數把新創建的對象插入到document中,難點之一就是你需要熟練地掌握java中DOM的知識和函數。第二,今天明白了如何提供在線html編輯功能,其實有免費的HTML editor 插件,我們只需要學會如何使用即可,并不用自己去實現編輯功能。
關鍵字:Apache典服務器 URL Rewrite 技術
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解