超好用,.htaccess用法大全,wordpress也適用

這些.htaccess代碼,非常的好,想得到的功能,大部分都有。
再次申明一下,這些代碼是可以直接複製到.htaccess裡面產生效果,絕大部分都是可以用,而有些是需要稍作修改。
因此你要修改.htaccess的時候,請先備份
 
重新和重定向
註:你伺服器需要安裝及啟用mod_rewrite。

強制 www

 
  1. RewriteEngine on
  2. RewriteCond %{HTTP_HOST} ^example.com [NC]
  3. RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]

強制www通用方法

 
  1. RewriteCond %{HTTP_HOST} !^$
  2. RewriteCond %{HTTP_HOST} !^www. [NC]
  3. RewriteCond %{HTTPS}s ^on(s)|
  4. RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
可用於多數的網站

強制 non-www

讓網址不帶www的方法
 
  1. RewriteEngine on
  2. RewriteCond %{HTTP_HOST} ^www.example.com [NC]
  3. RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

強制non-www通用方法

 
  1. RewriteEngine on
  2. RewriteCond %{HTTP_HOST} ^www.
  3. RewriteCond %{HTTPS}s ^on(s)|off
  4. RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www.)?(.+)$
  5. RewriteRule ^ %1%3%{REQUEST_URI} [R=301,L]

强制 HTTPS

 
  1. RewriteEngine on
  2. RewriteCond %{HTTPS} !on
  3. RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
  4. # Note: It's also recommended to enable HTTP Strict Transport Security (HSTS)
  5. # on your HTTPS website to help prevent man-in-the-middle attacks.
  6. # See https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security
  7. Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

強制HTTPS 通過代理

 
  1. RewriteCond %{HTTP:X-Forwarded-Proto} !https
  2. RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

重新指向到一個頁面

 
  1. Redirect 301 /oldpage.html http://dhamma.com.tw/newpage.html
  2. Redirect 301 /oldpage2.html http://dhamma.com.tw/folder/

目錄別名

 
  1. RewriteEngine On
  2. RewriteRule ^source-directory/(.*) target-directory/$1

重新指向整個網站

 
  1. Redirect 301 / http://newsite.com/
這樣做它的連結完好。假設一個www.oldsite.com/some/crazy/link.html將成為www.newsite.com/some/crazy/link.html。這是非常有用的,我們可以「移動」網站,到達一個新的網站。

乾淨的URL

 
  1. RewriteEngine On
  2. RewriteCond %{SCRIPT_FILENAME} !-d
  3. RewriteRule ^([^.]+)$ $1.php [NC,L]

拒絕所有訪問

[cc lang="php"] ## Apache 2.2 Deny from all ## Apache 2.4 # Require all denied [/cc]

拒絕所有訪問-排除部分

[cc lang="php"] ## Apache 2.2 Order deny,allow Deny from all Allow from xxx.xxx.xxx.xxx ## Apache 2.4 # Require all denied # Require ip xxx.xxx.xxx.xxx [/cc] 註:單獨列出所有允許的IP地址

遮罩爬蟲/惡意訪問

[cc lang="php"] ## Apache 2.2 Order deny,allow Allow from all Deny from xxx.xxx.xxx.xxx Deny from xxx.xxx.xxx.xxy ## Apache 2.4 # Require all granted # Require not ip xxx.xxx.xxx.xxx # Require not ip xxx.xxx.xxx.xxy [/cc]

保護隱藏檔和目錄

隱藏文件和目錄(那些名稱以一個點。),如果不是全部的時間固定。example: .htaccess, .htpasswd, .git, .hg…
 
  1. RewriteCond %{SCRIPT_FILENAME} -d [OR]
  2. RewriteCond %{SCRIPT_FILENAME} -f
  3. RewriteRule "(^|/)." - [F]
或者,你可以提出一個404的錯誤頁面,
  1. RedirectMatch 404 /\..*$

保護備份檔案和原始程式碼檔

如果你可以通過一些文本/ HTML編輯器留,公開這些文件,會造成極大的安全威脅,那你需要這段代碼保護。
 
  1. "(\.(bak|config|dist|fla|inc|ini|log|psd|sh|sql|swp)|~)$">
  2.     ## Apache 2.2
  3.     Order allow,deny
  4.     Deny from all
  5.     Satisfy All
  6.     ## Apache 2.4
  7.     # Require all denied

禁止目錄被流覽

  1. Options All -Indexes

禁止圖片連結被盜連

 
  1. [cc lang="php"]
  2. RewriteEngine on
  3. # Remove the following line if you want to block blank referrer too
  4. RewriteCond %{HTTP_REFERER} !^$
  5. RewriteCond %{HTTP_REFERER} !^http(s)?://(.+.)?example.com [NC]
  6. RewriteRule .(jpg|jpeg|png|gif|bmp)$ - [NC,F,L]
  7. # If you want to display a "blocked" banner in place of the hotlinked image,
  8. # replace the above rule with:
  9. # RewriteRule .(jpg|jpeg|png|gif|bmp) http://example.com/blocked.png [R,L]
  10. [/cc]

禁止圖片連結被盜連(針對特店網址)

有時候,我們只想讓某部分人禁止圖片盜連。
 
  1. class=dp-highlighter>
    class=bar>
    1. class=dp-c>
  2. class=alt>[cc lang=class=string>"php"]   
  3. RewriteEngine on   
  4. class=alt># Remove the following line class=keyword>if you want to block blank referrer too   
  5. RewriteCond %{HTTP_REFERER} !^$   
  6. class=alt>  
  7. RewriteCond %{HTTP_REFERER} !^http(s)?:class=comment>//(.+.)?example.com [NC]   
  8. class=alt>RewriteRule .(jpg|jpeg|png|gif|bmp)$ - [NC,F,L]   
  9.   
  10. class=alt># If you want to display a class=string>"blocked" banner in place of the hotlinked image,   
  11. # replace the above rule with:   
  12. class=alt># RewriteRule .(jpg|jpeg|png|gif|bmp) http:class=comment>//example.com/blocked.png [R,L]   
  13. [/cc]  

用密碼保護目錄

首先,你需要在系統中的某個地方創建一個.htpasswd的文件:
  1. htpasswd -c /home/fellowship/.htpasswd boromir
然後,你可以用它來驗證:
 
  1. AuthType Basic
  2. AuthName "One does not simply"
  3. AuthUserFile /home/fellowship/.htpasswd
  4. Require valid-user

用密碼保護檔案

 
  1. AuthName "One still does not simply"
  2. AuthType Basic
  3. AuthUserFile /home/fellowship/.htpasswd
  4. "one-ring.o">
  5. Require valid-user
  6. Require valid-user

使用Referrer過濾瀏覽者

  1. RewriteEngine on
  2. # Options +FollowSymlinks
  3. RewriteCond %{HTTP_REFERER} somedomain.com [NC,OR]
  4. RewriteCond %{HTTP_REFERER} anotherdomain.com
  5. RewriteRule .* - [F]

防止被別的網站嵌入

這可以防止網站被嵌入(別人使用iframe語法),當然可以允許制定特定URI。
 
  1. SetEnvIf Request_URI "/starry-night" allow_framing=true
  2. Header set X-Frame-Options SAMEORIGIN env=!allow_framing

啟用網站壓縮功能

這可以讓網站加速,最為標準的語法,我就是用這個語法的。
 
  1. # compression for mangled headers.
  2. # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
  3. SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)s*,?s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
  4. RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
  5. # Compress all output labeled with one of the following MIME-types
  6. # (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
  7. and can remove the `` and `` lines
  8. as `AddOutputFilterByType` is still in the core directives).
  9. AddOutputFilterByType DEFLATE application/atom+xml
  10. application/javascript
  11. application/json
  12. application/rss+xml
  13. application/vnd.ms-fontobject
  14. application/x-font-ttf
  15. application/x-web-app-manifest+json
  16. application/xhtml+xml
  17. application/xml
  18. font/opentype
  19. image/svg+xml
  20. image/x-icon
  21. text/css
  22. text/html
  23. text/plain
  24. text/x-component
  25. text/xml

設定瀏覽器快取功能

也稱設置過期頭資訊,詳細的內容我有這篇介紹設定瀏覽器快取功能
 
  1. ExpiresActive on
  2. ExpiresDefault "access plus 1 month"
  3. # CSS
  4. ExpiresByType text/css "access plus 1 year"
  5. # Data interchange
  6. ExpiresByType application/json "access plus 0 seconds"
  7. ExpiresByType application/xml "access plus 0 seconds"
  8. ExpiresByType text/xml "access plus 0 seconds"
  9. # Favicon (cannot be renamed!)
  10. ExpiresByType image/x-icon "access plus 1 week"
  11. # HTML components (HTCs)
  12. ExpiresByType text/x-component "access plus 1 month"
  13. # HTML
  14. ExpiresByType text/html "access plus 0 seconds"
  15. # JavaScript
  16. ExpiresByType application/javascript "access plus 1 year"
  17. # Manifest files
  18. ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
  19. ExpiresByType text/cache-manifest "access plus 0 seconds"
  20. # Media
  21. ExpiresByType audio/ogg "access plus 1 month"
  22. ExpiresByType image/gif "access plus 1 month"
  23. ExpiresByType image/jpeg "access plus 1 month"
  24. ExpiresByType image/png "access plus 1 month"
  25. ExpiresByType video/mp4 "access plus 1 month"
  26. ExpiresByType video/ogg "access plus 1 month"
  27. ExpiresByType video/webm "access plus 1 month"
  28. # Web feeds
  29. ExpiresByType application/atom+xml "access plus 1 hour"
  30. ExpiresByType application/rss+xml "access plus 1 hour"
  31. # Web fonts
  32. ExpiresByType application/font-woff2 "access plus 1 month"
  33. ExpiresByType application/font-woff "access plus 1 month"
  34. ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
  35. ExpiresByType application/x-font-ttf "access plus 1 month"
  36. ExpiresByType font/opentype "access plus 1 month"
  37. ExpiresByType image/svg+xml "access plus 1 month"

設定PHP變數

  1. php_value
  2. # For example:
  3. php_value upload_max_filesize 60M
  4. php_value max_execution_time 200

自定義錯誤頁面

 
  1. ErrorDocument 500 "Houston, we have a problem."
  2. ErrorDocument 401 http://error.example.com/mordor.html
  3. ErrorDocument 404 /errors/halflife3.html

自動UTF-8 Encode

讓您的文字內容應始終是UTF-8編碼
 
  1. # Use UTF-8 encoding for anything served text/plain or text/html
  2. AddDefaultCharset utf-8
  3. # 强制 UTF-8 for a number of file formats
  4. AddCharset utf-8 .atom .css .js .json .rss .vtt .xml

切換PHP版本

如果你是租用虛擬主機,虛擬主機或許安裝許多版本的php,而你可以透過此方法來更改php版本。
 
  1. AddHandler application/x-httpd-php55 .php
  2. # Alternatively, you can use AddType
  3. AddType application/x-httpd-php55 .php
若無法更換,則可以聯絡虛擬主機的公司。

禁止IE相容性

  1. BrowserMatch MSIE is-msie
  2. Header set X-UA-Compatible IE=edge env=is-msie

支持WebP圖片格式

 
  1. RewriteEngine On
  2. RewriteCond %{HTTP_ACCEPT} image/webp
  3. RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
  4. RewriteRule (.+).(jpe?g|png)$ $1.webp [T=image/webp,E=accept:1]

評論 (0)

此處尚未發表評論

留言

  1. 以遊客身份發表評論。 註冊登入到您的帳戶。
附件 (0 / 3)
分享您的位置