.htaccess 是什么?
htaccess (hypertext access,超文本訪問) 是為網站所有者提供用于控制服務器環境變量以及其它參數的選項,從而增強他們網站的功能的文件。這些文件可以在網站目錄樹的任何一個目錄中,并向該目錄以及目錄中的文件和子目錄提供功能。
這些功能是什么呢?其實這些是服務器的指令,例如命令服務器執行特定任務的行,這些命令只對該文件所在目錄中的文件和子目錄有效。這些文件默認是隱藏的,因為所有操作系統和網站服務器默認配置為忽略它們,但如果查看隱藏文件的話,你就可以看到這些特殊文件。后續章節的話題將討論能控制什么類型的參數。
注意:如果 .htaccess 文件保存在 /apache/home/www/Gunjit/ 目錄,那么它會向該目錄中的所有文件和子目錄提供命令,但如果該目錄包含一個名為 /Gunjit/images/ 子目錄,且該子目錄中也有一個 .htaccess 文件,那么這個子目錄中的命令會覆蓋父目錄中 .htaccess 文件(或者目錄層次結構中更上層的文件)提供的命令。
Apache Server 和 .htaccess 文件
Apache HTTP Server 俗稱為 Apache,是為了表示對一個有卓越戰爭策略技能的美洲土著部落的尊敬而命名。它基于 NCSA HTTPd 服務器 ,是用 C/C++ 和 XML 建立的跨平臺 Web 服務器,它在萬維網的成長和發展中起到了關鍵作用。
它最常用于 UNIX,但 Apache 也能用于多種平臺,包括 FreeBSD、Linux、Windows、Mac OS、Novel Netware 等。在 2009 年,Apache 成為第一個為超過一億站點提供服務的服務器。
Apache 服務器可以讓 www/ 目錄中的每個用戶有一個單獨的 .htaccess 文件。盡管這些文件是隱藏的,但如果需要的話可以使它們可見。在 www/ 目錄中可以有很多子目錄,每個子目錄通過用戶名或所有者名稱命名,包含了一個站點。除此之外你可以在每個子目錄中有一個 .htaccess 文件,像之前所述用于配置子目錄中的文件。
下面介紹如果配置 Apache 服務器上的 htaccess 文件。
Apache 服務器上的配置
這里有兩種情況:
在自己的服務器上托管網站
在這種情況下,如果沒有啟用 .htaccess 文件,你可以通過在 http.conf(Apache HTTP 守護進程的默認配置文件) 中找到 部分啟用。
<Directory"/var/www/htdocs">
定位如下行
AllowOverrideNone
更改為
AllowOverrideAll
現在,重啟 Apache 后就啟用了 .htaccess。
11個實用的Apache .htaccess配置
1. 強制后綴反斜杠
在URL的尾部加上反斜杠似乎對SEO有利 :)
<IfModule mod_rewrite.c> RewriteCond %{REQUEST_URI} /+[^/.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] </IfModule>
2. 防盜鏈
節省你寶貴的帶寬吧!
RewriteEngine On #Replace ?mysite/.com/ with your blog url RewriteCond %{HTTP_REFERER} !^http://(.+/.)?mysite/.com/ [NC] RewriteCond %{HTTP_REFERER} !^$ #Replace /images/nohotlink.jpg with your "don't hotlink" image url RewriteRule .*/.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]
3. 重定向移動設備
加入你的網站支持移動設備訪問的話,最好還是重定向移動設備的訪問到專門定制的頁面
RewriteEngine On RewriteCond %{REQUEST_URI} !^/m/.*$ RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml|application/vnd.wap.xhtml+xml" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC] #------------- The line below excludes the iPad RewriteCond %{HTTP_USER_AGENT} !^.*iPad.*$ #------------- RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] #*SEE NOTE BELOW RewriteRule ^(.*)$ /m/ [L,R=302]
新聞熱點
疑難解答