什麼是強制HTTPS和WWW但允許localhost的最佳方法?

什麼是強制HTTPS和WWW但允許localhost的最佳方法? [繁體中文]

HTACCESS強制HTTPS和WWW但允許localhost

強制HTTPS和WWW非常重要,原因如下:通過顯示連接是安全的,贏得訪問者的信任,如果您使用的是子域名(如www),則可以在便宜的網站上保持與訪問者和報告的一致性舉辦例如。

在Google Search Console等報表引擎中,對於完全相同的網站和網頁,可能會有不同的視圖。一個具有安全的HTTPS連接,一個沒有,其中一個具有Web子域www,另一個沒有,甚至成為一個噩夢,導致您必須設置Google Analytics子域過濾器以獲得一致的報告。

實際上有一些簡單的方法可以確保將所有訪問者重定向到 HTACCESS強制HTTPS 版本的站點和Web子域中的安全,而不會影響訪問,並且它還可以用於 將網站重定向到另一個網站 優雅的方法。

並且,最重要的是,為了確保可以在沒有Web子域或重定向到HTTPS的情況下訪問localhost子域,並且以slash結尾的頁面將被重定向到正常頁面,以避免報告中相同頁面的重複計數。

讓我們擺脫所有這些重複的頁面,這使得最終難以正確地重新分析分析:

  • http://mywebsite.com/page

  • http://mywebsite.com/page/

  • https://mywebsite.com/page

  • https://mywebsite.com/page/

  • http://www.mywebsite.com/page

  • http://www.mywebsite.com/page/

  • https://www.mywebsite.com/page

  • https://www.mywebsite.com/page/

  • 所有這些都將通過更新.htaccess的文件來完成,該文件是Apache服務器上使用的隱藏文件,通常存儲在網站的根文件夾中。

重定向頁面以斜杠結尾

要從以其中一個結尾的URL中刪除結束斜杠,並將請求重定向到沒有斜杠的標準頁面,只需將以斜杠開頭和結尾的URL匹配,確保它不是所請求的目錄,並重定向到沒有結束斜杠的整個請求URI。

此外,將頁面重定向到應該正確的安全Web URL - 這將直接解決所有潛在問題,包括結束斜杠,非安全請求或非Web子域。

我們還需要一段額外的代碼來確保對目錄的任何請求都以斜杠結尾,因為正常的網站目錄URL最終會以其中一個為止。

# Remove trailing slash from non-filepath urls
RewriteCond %{REQUEST_URI} /(.+)/$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ https://www.mywebsite.com/%1 [R=301,L]
# Include trailing slash on directory
RewriteCond %{REQUEST_URI} !(.+)/$
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)$ https://www.mywebsite.com/$1/ [R=301,L]

HTACCESS強制HTTPS並強制WWW htaccess的

現在已經解決了結束斜杠問題,讓我們關注可能發生的丟失的HTTPS或丟失的Web子域,使用強制www將htaccess的重定向到https。

實現它的最簡單,最時尚的方法是在完全相同的htaccess的條件下識別它們。

通過匹配不以Web子域開頭的URL或任何不包含HTTPS的請求,以及重定向我們網站的正確URL(包括安全連接和Web子域www),可以輕鬆完成此操作。

# HTACCESS force HTTPS and force WWW htaccess 
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [OR,NC]
RewriteCond %{https} off
RewriteRule ^(.*)$ https://www.mywebsite.com/$1 [R=301,L]

強制HTTPS和WWW但允許localhost

現在,這一切都很好,但是當我們真正嘗試在XAMPP本地服務器上以開發模式訪問我們的網站時會發生什麼,但我們對http:// localhost的所有請求現在都被重定向到https://www.mysite.com - 我們的生產版本?

那麼解決方案是重用前一段代碼來強制執行HTTPS請求的HTTPS和WWW版本,但是通過從檢查請求中排除,這些檢查請求要么是地址主機,要么是我們的本地IP地址,即127.0.0.1。

就是這樣,我們現在擁有一塊漂亮的代碼來解決我們所有的問題!

# HTACCESS force HTTPS and force WWW htaccess 
RewriteCond %{HTTP_HOST} !^localhost [NC]
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [OR,NC]
RewriteCond %{https} off
RewriteRule ^(.*)$ https://www.mywebsite.com/$1 [R=301,L]

將HTTP重定向到HTTPS htaccess的,強制WWW並刪除結束斜杠

下面的整段代碼可以在HTACCESS文件中使用,以實現以下所有功能:

在htacces中將HTTP重定向到HTTPS,

在htaccess的中強制WWW,

刪除URL中的結尾斜杠。

當然,不要忘記更改適用於您的網站的網址。

它甚至可以用於 將網站重定向到另一個網站 ,只需將目標網址更改為其他最便宜的網站託管網站:

#--------------------------------------------------
# Force WWW htaccess : /
#--------------------------------------------------
#### Force HTTPS://WWW and remove trailing / from files ####
## Turn on rewrite engine
RewriteEngine on

# Remove trailing slash from non-filepath urls
RewriteCond %{REQUEST_URI} /(.+)/$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ https://www.mywebsite.com/%1 [R=301,L]

# Include trailing slash on directory
RewriteCond %{REQUEST_URI} !(.+)/$
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)$ https://www.mywebsite.com/$1/ [R=301,L]

# HTACCESS force HTTPS and force WWW htaccess
RewriteCond %{HTTP_HOST} !^localhost [NC]
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [OR,NC]
RewriteCond %{https} off
RewriteRule ^(.*)$ https://www.mywebsite.com/$1 [R=301,L]

類似的文章

評論 (0)

發表評論

使用Ezoic,廣告收入增加50-250%。 Google認證發布合作夥伴。
使用Ezoic,廣告收入增加50-250%。 Google認證發布合作夥伴。
 
使用Ezoic,廣告收入增加50-250%。 Google認證發布合作夥伴。
使用Ezoic,廣告收入增加50-250%。 Google認證發布合作夥伴。