1、除 URL 中的 www
出於 SEO 考慮,你可能期望移除 URL 中的 www 前綴。以下代碼實現了這個功能,並將所有帶 www 的地址重定向到無 www 一級域名。
- RewriteEngine On
- RewriteCond %{HTTP_HOST} !^mangguo.org$ [NC]
- RewriteRule ^(.*)$ http://mangguo.org/$1 [L,R=301]
2、防止盜鏈
盜鏈通常被認爲是可恥行爲。當你被別人盜鏈,別人將免費使用你那昂貴的帶寬,不是小氣,是帶寬費用傷不起啊傷不起。要防止盜鏈僅需添加使用以下代碼:
- RewriteEngine On
- #將 ?mangguo\.org/ 替換成你的博客地址
- RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mangguo\.org/ [NC]
- RewriteCond %{HTTP_REFERER} !^$
- #將 /images/nohotlink.jpg 替換成“請勿盜鏈”圖片地址
- RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]
3、將 WordPress RSS 源重定向到 Feedburner
大多數博客作者使用 Feedburner 託管 RSS 種子,以便對博客閱讀進行統計分析。如果你使用 WordPress,你應當會將所有 RSS 訂閱源重定向到 Feedburner 源。修改第二行和第三行代碼,並將代碼拷貝到 .htaccess 中。
- <IfModule mod_alias.c>
- RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://feeds.feedburner.com/mangguo/
- RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://feeds.feedburner.com/mangguo/
- </IfModule>
4、創建自定義錯誤頁
看煩了老舊的錯誤頁面?那就親手實踐下製作自定義錯誤頁吧。將這些個性錯誤頁上傳到主機,然後添加以下代碼:
- ErrorDocument 400 /errors/badrequest.html
- ErrorDocument 401 /errors/authreqd.html
- ErrorDocument 403 /errors/forbid.html
- ErrorDocument 404 /errors/notfound.html
- ErrorDocument 500 /errors/serverr.html
5、強制下載指定文件
當提供一些類似 MP3、eps 或 xls 文件下載時,你可能需要強制讓客戶端下載而不是讓瀏覽器決定是不是要下載。
- <Files *.xls>
- ForceType application/octet-stream
- Header set Content-Disposition attachment
- </Files>
- <Files *.eps>
- ForceType application/octet-stream
- Header set Content-Disposition attachment
- </Files>
6、記錄 PHP 錯誤
這段代碼將在服務器上創建一個 php_error.log 文件,並將 PHP 文件的錯誤記錄寫入該日誌文件。
- # display no errs to user
- php_flag display_startup_errors off
- php_flag display_errors off
- php_flag html_errors off
- # log to file
- php_flag log_errors on
- php_value error_log /location/to/php_error.log
7、移除 URL 中的文件擴展名
文件擴展名對開發者可能有用,但對於訪客而言,根本毛都沒用。這段代碼將移除 html 文件那一坨一坨的 .html 後綴。當然你也可以用於移除其他類型的文件,比如 php 等。
- RewriteEngine on
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteCond %{REQUEST_FILENAME}\.html -f
- RewriteRule ^(.*)$ $1.html
- # Replace html with your file extension, eg: php, htm, asp
8、屏蔽網站目錄列表
目錄列表是在網站找不到默認文件時的應急措施,服務器將毫無保留的返回一個當前目錄下的所有文件。這將給網站帶來非常大的安全隱患。因此,現在 很多程序都會在任何子目錄下面放一個index.htm文件來避免這種疏漏。但是,通過htaccess文件我們可以徹底的解決這個問題。
在文件中加入以下代碼:
Options -Indexes
這將徹底關閉網站的目錄列表功能,但對於網站的正常訪問是沒有任何影響的。如果想顯示文件列表,則只需要將“-”更改爲“+”。如果使用 htaccess在線生成工具,只需要把“是否在沒有默認文檔的目錄顯示文件列表”菜單選擇成“隱藏”即可,程序將自動生成相關代碼。
9、Options -Indexes通過壓縮靜態資源減少頁面大小
瀏覽器中的數據傳輸是可以被壓縮的,客戶端能夠解壓服務端發送的壓縮數據。這段代碼將友好地減少你的頁面大小,並節約帶寬開支。
- AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml
- text/javascript text/css application/x-javascript
- BrowserMatch ^Mozilla/4 gzip-only-text/html
- BrowserMatch ^Mozilla/4.0[678] no-gzip
- BrowserMatch bMSIE !no-gzip !gzip-only-text/html
10、自動爲文件添加 utf-8 編碼
爲了避免編碼問題,你可以通過 .htaccess 文件強制指定編碼。這樣一來,就可以確保 HTML 文檔總能被正確渲染,即便你忘了添加 <meta http-equiv="Content-Type"> 語句。
- <FilesMatch "\.(htm|html|css|js)$">
- AddDefaultCharset UTF-8
- </FilesMatch>
11、默認入口頁面
有些虛擬主機就是另類,不適用默認的文件名,或順序非主流。那麼通過以下的代碼就可以自己定義這個頁面的文件名了。比如index.htm 、default.php等等:
DirectoryIndex index.php
這行代碼將index.php作爲默認首頁。其他頁面請直接替換例子中的index.php。如果網站有多個頁面需要作爲首頁,請按照 DirectoryIndex index.php index2.php的格式編寫文件。此項設置在htaccess生成器中,僅僅需要你依次填入首頁的文件名即可,非常方便。
12、通過htaccess開啓網站圖片緩存
某些虛擬主機限制了網站的流量,如果瀏覽器每次都從服務器下載最常用的圖片文件,將會浪費大量的帶寬。因此可以開啓圖片緩存,瀏覽器在緩存過期前將會自動從緩存區載入圖片文件。此功能在文件中加入以下代碼:
Header set Cache-Control “max-age=3600″
需要注意的是,上面的3600單位爲秒,即超時時間,上圖中的gif等爲圖片文件後綴,表示對這些文件生效。如果使用自動生成工具,爲了開啓此選項,請將“開啓站點的圖片緩存”選項卡選擇一個超時時間。目前有十分鐘、一小時、一天等選項可供設置。
13、固定301、302網頁重定向
由於頁面轉移位置造成的404錯誤是我們大家都非常頭痛的問題,但我們只需要做一個301的重定向就會完全解決這個問題了。在htaccess文件中加入以下代碼:
Redirect permanent /old.htm http://www.php100.com
前面一個參數使用相對路徑,也可以使用目錄名,後一個參數必須填寫完整網址。這樣才能生效,並且不出錯誤。在SEO中,搜索引擎也很快就會按照你的設置,將收錄的網頁更新。
14、修改PHP設置
如果我們不能訪問php.ini文件,有些主機服務商允許我們修改.htaccess文件來改變一些PHP設置,例如,我想生成所上傳圖片的縮 略圖,有些主機服務商默認將PHP的內存限制爲2MB,顯然要生成縮略圖是不夠用的,因此我要將這個限制改大一點,如增加到16MB,如果要移除內存限 制,可以將其設爲-1。
爲了在.htaccess文件中修改PHP設置,服務器必須啓用了AllowOverride Options(或AllowOverride all)選項,如果那樣,我們只需要在.htaccess文件中添加下面一行命令即可:
php_value memory_limit 16M