Pages

Subscribe:

Ads 468x60px

Labels

2017年5月22日 星期一

如何透過.htaccess檔,來使用URL redirect/rewrite功能?

資料來源

.htaccess 重新導向/改寫    教學


章節 1   如何讓轉向所有到www.domain.com的連結,去domain.com?


問題描述
你的網站可以透過www.domain.com和domain.com這兩個域名來存取。由於Google會處罰這樣子的網站只因為它們有重複的內容,你得讓你的域名要嘛是domain.com或是www.domain.com 。然而,由於所有從外界連進來的連結並不歸你管,而且搜尋引擎也已經對你的網站的兩個域名建立索引了,你很難輕易地改變這件事。

解法
對於所有向錯誤URL要資料的http請求,做一個301轉址。

範例1 - 轉向所有不是www.domain.com 去www.domain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

範例2 - 轉向所有不是domain.com 去domain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

範例3 - 轉向所有domain.com 去www.domain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]


對於上述範例的解釋
讓我們先看範例1:
第一行指示apache啟動改寫模組
第二行RewriteCond %{HTTP_HOST} !www\.domain\.com$是比對指令。比對指令表示下一行的改寫指令只有當%{HTTP_HOST},即瀏覽器指向的域名,不是www.domain.com這個域名時,才會作用。其中!表示了「不是」的意思。[NC]表示忽略大小寫。^$這兩個符號中的文字,是正規表示式。所以.前面,必須加上逸脫字元。
第三行描述了改寫將如何改。其中^(.*)$這個正規表示式,比對了URL除了域名的後半部分。這條規則,表示將比對到的URL的後面部分,視為是$1,附加在domain.com/之後,作為新的URL。[L]表示這是最後一條改寫指令,所以一個http要求做了這次改寫之後,就會直接做為結果。而R=301是表示,網頁伺服器傳回一個301狀態碼給瀏覽器。


章節 2   如何將domain.com/重新導向成domain.com/index.php

問題描述:
你有個網站,域名是domain.com,而你打算讓所有進來的URL連結,凡是連到domain.com/的會跑到domain.com/index.php

解法:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^$ http://domain.com/index.php [L,R=301]

對於上述範例的解釋
第一行指示apache啟動改寫模組
第二行RewriteCond %{HTTP_HOST} ^domain\.com$是比對指令。比對指令表示下一行的改寫指令只有當%{HTTP_HOST},即瀏覽器指向的域名,等於domain.com這個域名時,才會作用。^$這兩個符號中的文字,是正規表示式。所以.前面,必須加上逸脫字元。
第三行描述了改寫將如何改。其中^$這個正規表示式,比對了URL除了域名的後半部分。這條規則,表示將比對到的URL的後面部分,在這個例子中,是空字串。而新的URL,將是http://domain.com/index.php。[L]表示這是最後一條改寫指令,所以一個http要求做了這次改寫之後,就會直接做為結果。而R=301是表示,網頁伺服器傳回一個301狀態碼給瀏覽器。

章節 3   如何透過.htaccess檔來移動域名下的資料


問題描述:
你有個網站,可以透過舊的域名olddomain.com來存取。而現在你有個新的域名,現在你希望這個網站可以透過newdomain.com來存取。然而,外界(整個網際網路)已經有有許多指向舊的域名的連結,你希望他們可以自動改連到新的域名。如此一來,舊域名的Google的搜尋排行也將可以由新域名來繼承。

解法:
對於每個到舊的域名要求資料的http要求,做301轉址

範例 - 從olddomain.com轉向到www.newdomain.com
RewriteEngine On
RewriteCond %{HTTP_HOST} !^newdomain.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]


章節 4   加入結尾斜線到被要求的URL後方。


問題描述:
有時候,網址中的結尾斜線的表示的意思是資料夾,如果忘了加結尾斜線就會造成伺服器錯誤。舉個例子,如果http://domain.com/dir/對應到dir這個目錄。如果使用者打的網址是http://domain.com/dir時,因為忘了加結尾斜線,伺服器會以為要去找dir這個檔案,就會造成錯誤。

解法:
讓所有的沒有結尾斜線但是又是指向資料夾的URL,轉向成有結尾斜線的URL。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$           $1/  [R]

對於上述範例的解釋
第一行指示apache啟動改寫模組
第二行RewriteCond %{REQUEST_FILENAME} -d是比對指令。意思是,只有當目標的檔名是一個資料夾時,才讓下方的改寫規則作用。
第三行描述了改寫規則將如何改寫。其中^(.+[^/])$這個正規表示式,比對了URL除了域名的後半部分。這條規則,表示將比對到的URL的後面部分,是一個最後沒有加結尾斜線的字串。改寫時,原來的檔名最後將被加上結尾斜線,作為新的URL。而R表示,網頁伺服器傳回一個301狀態碼給瀏覽器。


更多範例,請參考Apache官方文件

2017年5月16日 星期二

Remote Desktop Organizer 遠端桌面管理工具 | demo小鋪

Remote Desktop Organizer 遠端桌面管理工具 | demo小鋪: 很多人都和 demo 一樣必須要同時管理許許多多的遠端桌面,內建的陽春下拉選單一定是不能符合需求,而有此需求的網友們一定也知道 Royal TS 這套方便的工具,但因為 Royal TS 已經轉為商業軟體,最後免費版 demo 還用到現在呢,一直沒有找到可以替代的工具,但是今天發現了Remote Desktop Organizer (RDO)這套好東西忍不住馬上要來推薦給各位。

Andy 的隨手寫技術筆記本: 圖解 微軟 Windows Server 2016 新作業系統版本說明

Andy 的隨手寫技術筆記本: 圖解 微軟 Windows Server 2016 新作業系統版本說明: 1.以下小弟會節錄本次微軟所提供給代理經銷商們的型錄資料 (WIN SERVER 2016) PO 給各位資訊弟兄們參考 ~ 對於想要更換新作業系統的好友們開始就可以慢慢規劃囉 !! 採購的做法上 跟前一代 2012 有明顯不同,改為 BY CORE 模式 ~ 對於一般使用...

Andy 的隨手寫技術筆記本: 將現有 Windows Server 2003 R2 網域升級至 Windows Server 20...

Andy 的隨手寫技術筆記本: 將現有 Windows Server 2003 R2 網域升級至 Windows Server 20...: 在之前的文章中,已經有帶大家從 Windows Server 2003 R2 的網域升級至 Windows Server 2008 R2 ,而現在 Windows Server 2012 R2 也在 PreView 階段,在不久後也即將上市。對於尚未升級的企業來說,也許可以考慮等...

2017年5月7日 星期日

桂圓紅棗黑糖

桂圓紅棗黑糖

使用黑糖、桂圓、紅棗三者為原料精煉成黑糖塊,直接沖泡後即可,完全不需要花時間煮製,輕輕鬆鬆就可以享用。
每盒200公克,一杯馬克杯500CC大約只要放入兩塊。隨身包設計,撕開熱水沖泡即可享用。


2017年5月6日 星期六

OpenCart 2.0 styling tutorials

Awesome Social Login API Setup for Opencart

Installing OpenCart on Centos 7

Synic SMS - Opencart Order SMS Extension + SMS API Service (India) by Sy...

TemplateMonster OpenCart Tutorials

Opencart 2 操作教學 - 夏木樂