国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > Apache > 正文

mod_rewrite小技巧

2024-08-27 18:22:01
字體:
來源:轉載
供稿:網(wǎng)友

作為站長,你要決定怎樣提高你網(wǎng)頁對訪問者的辨識度以及在重寫的uri地址里放入適當?shù)男畔ⅰT趧?chuàng)建新的uri規(guī)則的時候務必考慮詳細周全一些。另外當你完成新的uri規(guī)則以后,必須回去更新以前老的鏈接來匹配新的規(guī)則。

當你在設計新的uri規(guī)則的時候,一定注意其唯一性。舉一個先前的例子,我用了國家名,州省名,城市名作為uri的元素,因為他們在數(shù)據(jù)庫教程里面都是唯一的。但是如果建立一個讓用戶自己更新的數(shù)據(jù)庫,我們沒有理由讓用戶取的文章名字保持唯一性,所以文章一般在數(shù)據(jù)庫里是以一個自動增長的id作為唯一識別碼,這個唯一id對url重寫規(guī)則相當友好,它可以使你的重寫規(guī)則更加簡潔,在url里面可以用原子非常直接的將其值標識出來。

人們通常想映射數(shù)據(jù)庫里面的值比如標題以及其他字符作為url的標識,在mod_rewrite中有一個rewritemap狀態(tài)專門處理這種情況,但是前提是你必須有修改apache配置文件httpd.conf的權限。所以為了根本避免這個問題,還是直接用id創(chuàng)建你的鏈接吧。

空格是以%20的形式展示在url中的,所以你必須在php教程代碼里面將其替換掉,php的str_replace函數(shù)完全可以勝任這項工作。你只需要在$_get獲取查詢值的時候,將其替換就可以了。但是在數(shù)據(jù)庫中空格是難免的,所以我寧愿將空格替換成下劃線,以下為php代碼:

$name = str_replace ( ‘ ‘, ‘_’, $name );

在添加新的url規(guī)則的時候,小心不要打破了原先已存在的鏈接間的相對關系。開發(fā)人員通常會驚訝為什么有時候css教程,網(wǎng)頁特效,圖片等文件出現(xiàn)錯誤或者不啟作用了。記住相對鏈接只匹配你當前url的地址,所以你需要將這些相對鏈接更改成絕對鏈接地址,或者在你的靜態(tài)網(wǎng)頁加上html

標簽。

13 個mod_rewrite 應用舉例

先前我們舉了一個給每個鏈接加一個www的列子,現(xiàn)在讓我們看看用mod_rewrite還可以做哪些工作。

1.給子域名加www標記 

rewritecond %{http_host} ^([a-z.]+)?example.com$ [nc]

rewritecond %{http_host} !^www. [nc]

rewriterule .? http://www.%1example.com%{request_uri} [r=301,l]

這個規(guī)則抓取二級域名的%1變量,如果不是以www開始,那么就加www,以前的域名以及{request_uri}會跟在其后。

2.去掉域名中的www標記 

rewritecond %{http_host} !^example.com$ [nc]

rewriterule .? http://example.com%{request_uri} [r=301,l]

3.去掉www標記,但是保存子域名 

rewritecond %{http_host} ^www.(([a-z0-9_]+.)?example.com)$ [nc]

rewriterule .? http://%1%{request_uri} [r=301,l]

這里,當匹配到1%變量以后,子域名才會在%2(內(nèi)部原子)中抓取到,而我們需要的正是這個%1變量。

4.防止圖片盜鏈 

一些站長不擇手段的將你的圖片盜鏈在他們網(wǎng)站上,耗費你的帶寬。你可以加一下代碼阻止這種行為。

rewritecond %{http_referer} !^$

rewritecond %{http_referer} !^http://(www.)?example.com/ [nc]

rewriterule .(gif|jpg|png)$ – [f]

如果{http_referer}值不為空,或者不是來自你自己的域名,這個規(guī)則用[f]flag阻止以gif|jpg|png 結尾的url

如果對這種盜鏈你是堅決鄙視的,你還可以改變圖片,讓訪問盜鏈網(wǎng)站的用戶知道該網(wǎng)站正在盜用你的圖片。

rewritecond %{http_referer} !^$

rewritecond %{http_referer} !^http://(www.)?example.com/.*$ [nc]

rewriterule .(gif|jpg|png)$ http://www.example.com/hotlinked.gif [r=301,l]

除了阻止圖片盜鏈鏈接,以上規(guī)則將其盜鏈的圖片全部替換成了你設置的圖片。

你還可以阻止特定域名盜鏈你的圖片:

rewritecond %{http_referer} !^http://(www.)?leech_site.com/ [nc]

rewriterule .(gif|jpg|png)$ – [f,l]

這個規(guī)則將阻止域名黑名單上所有的圖片鏈接請求。

當然以上這些規(guī)則都是以{http_referer}獲取域名為基礎的,如果你想改用成ip地址,用{remote_addr}就可以了。

5.如果文件不存在重定向到404頁面 

如果你的主機沒有提供404頁面重定向服務,那么我們自己創(chuàng)建。

rewritecond %{request_filename} !-f

rewritecond %{request_filename} !-d

rewriterule .? /404.php [l]

這里-f匹配的是存在的文件名,-d匹配的存在的路徑名。這段代碼在進行404重定向之前,會判斷你的文件名以及路徑名是否存在。你還可以在404頁面上加一個?url=$1參數(shù):

rewriterule ^/?(.*)$ /404.php?url=$1 [l]

這樣,你的404頁面就可以做一些其他的事情,例如默認信心,發(fā)一個郵件提醒,加一個搜索,等等。

6.重命名目錄

如果你想在網(wǎng)站上重命名目錄,試試這個:

rewriterule ^/?old_directory/([a-z/.]+)$ new_directory/$1 [r=301,l]

在規(guī)則里我添加了一個“.”(注意不是代表得所有字符,前面有轉義符)來匹配文件的后綴名。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 社旗县| 桃园市| 遵义市| 昌平区| 石棉县| 南宁市| 东明县| 石柱| 黄冈市| 丰原市| 都昌县| 宣城市| 宿迁市| 武川县| 临沂市| 如东县| 沾益县| 桃江县| 仙居县| 伽师县| 平顺县| 乐清市| 衡山县| 通化市| 邵东县| 洪雅县| 岐山县| 新营市| 平泉县| 辛集市| 东丽区| 河源市| 宝丰县| 大名县| 大理市| 监利县| 宜良县| 中宁县| 玉环县| 定州市| 甘孜|