apache環境.htaccess設置301跳轉及經常使用.htaccess技巧整理

apache環境.htaccess設置301跳轉及經常使用.htaccess技巧整理


不管是Nginx,仍是Apache都各自有優點,對於咱們普通用戶而言基本上也沒有多大的區別。在虛擬主機環境中,基本上都是Apache環境。Apache與Nginx二者區別之一就是僞靜態的設置,前者則是在網站根目錄設置.htaccess文件,不管是僞靜態,仍是301跳轉,甚至是防盜鏈和禁止某個IP的訪問均可以很簡單的設置。

Apache環境.htaccess設置301跳轉及經常使用.htaccess技巧整理

關於.htaccess文件的設置和實際應用是至關普遍的,不少功能均可以利用這個小小的文件實現,只不過咱們普通用戶使用的並很少而已,好比咱們使用最多的無非就是WWW或者非WWW 301跳轉,頂多加上防盜鏈等功能,在這篇文章中就是.htaccess文件的常見的用法。

第1、強制www域名301跳轉

RewriteEngine on
RewriteCond %{HTTP_HOST} ^chinasoft\.com [NC]
RewriteRule ^(.*)$ https://www.chinasoft.com/$1 [L,R=301,NC]

咱們將域名替換成本身的域名便可實現非WWW跳轉到WWW域名。

第2、強制非WWW域名301跳轉

RewriteEngine On
RewriteCond %{HTTP_HOST} !^chinasoft.com$ [NC]
RewriteRule ^(.*)$ http://chinasoft.com/$1 [L,R=301]

這裏咱們能夠強制若是訪問www域名前綴,會跳轉到非www域名。

第3、強制https跳轉地址

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.chinasoft.com/$1 [R,L]


同時知足強制跳轉https和www的示例

# 強制跳轉https和www
RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_HOST} ^chinasoft.io
RewriteRule ^(.*)$ https://www.chinasoft.io/$1 [R,L]

如何咱們網站採用SSL證書,則通常須要強制跳轉https路徑,這裏須要添增強制80端口的跳轉。

第4、阻止無用的蜘蛛爬取

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (^$|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms) [NC]
RewriteRule ^(.*)$ - [F]

第5、強制/斜槓結尾路徑

RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

第6、取消/斜槓結尾

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]

第7、將A頁面301跳轉到B頁面

Redirect 301 /a.html https://www.chinasoft.com/b.html

第8、阻止某個IP訪問

Order deny,allow
Allow from all
Deny from xxx.xxx.xxx.xxx

第9、禁止圖片盜鏈

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(.+\.)?chinasoft.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|bmp)$ - [NC,F,L]

第10、禁止被其餘網頁套用

SetEnvIf Request_URI "/starry-night" allow_framing=true
Header set X-Frame-Options SAMEORIGIN env=!allow_framing

第11、所有重定向到B網站

RewriteEngine on
RewriteRule ^(.*)$ http://www.chinasoft.com/$1 [R=301,L]

若是咱們更換域名或者但願域名流量所有導入新網站,這裏能夠所有跳轉。

第12、去掉默認首頁 index.html

# 去掉index.html
RewriteCond %{REQUEST_URI} ^(/index\.html)$ [NC]
RewriteRule ^(.*) / [R=301,L]

RewriteCond %{REQUEST_URI} !^(/index\.html)$ [NC]
RewriteCond %{REQUEST_URI} (/index\.html)$ [NC]
RewriteRule (.+)/index\.html /$1/ [R=301,L]

第十3、經常使用狀態碼全局跳轉

ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 405 /405.html
ErrorDocument 500 /500.html
ErrorDocument 503 /503.html

ErrorDocument 這裏填 403,404等錯誤信息調整頁面,用來訪問出現404頁面等狀況時的錯誤頁面展現

總結,平時經常使用和不經常使用的.htaccess僞靜態、30一、防盜鏈以及等設置功能。若是須要更多強大的htaccess功能則須要閱讀官方文檔。




完整站點示例:

root@server1 [/home/chinasoft0807/public_html]# more .htaccess
# 打開zip 壓縮
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/php
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/opentype
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^home\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /online/home.html [L]
</IfModule>

DirectoryIndex index.php index.html home.html
<Files 403.shtml>
order allow,deny
allow from all
</Files>

deny from 1.180.17.231

RewriteOptions inherit


<IfModule include_module>
   Options +IncludesNoExec
</IfModule>

AddType text/html .shtml  .html  .htm
AddOutputFilter INCLUDES .shtml  .html  .htm

RewriteEngine on
# 強制跳轉https和www
RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_HOST} ^chinasoft.io
RewriteRule ^(.*)$ https://www.chinasoft.io/$1 [R,L]

# 去掉index.html
RewriteCond %{REQUEST_URI} ^(/index\.html)$ [NC]
RewriteRule ^(.*) / [R=301,L]

RewriteCond %{REQUEST_URI} !^(/index\.html)$ [NC]
RewriteCond %{REQUEST_URI} (/index\.html)$ [NC]
RewriteRule (.+)/index\.html /$1/ [R=301,L]

# /files 臨時跳轉 mm.edrasoft.com
Redirect 301 /files https://mm.chinasoft.com
# 404 調整默認首頁
ErrorDocument 404 https://chinasoft.io/online/home.htmljavascript

相關文章
相關標籤/搜索