การกำหนดกฎและการเปลี่ยนเส้นทางโดยใช้ .htaccess

ไฟล์ .htaccess เป็นไฟล์กำหนดค่าระดับไดเรกทอรีที่รองรับโดยเว็บเซิร์ฟเวอร์ Apache ช่วยให้คุณสามารถปรับแต่งการตั้งค่าเว็บเซิร์ฟเวอร์ (เช่น เปิดหรือปิดฟีเจอร์) สำหรับบัญชีเฉพาะ โดยไม่กระทบกับการตั้งค่าระดับเซิร์ฟเวอร์โดยรวม

ไฟล์นี้จะนำการตั้งค่าไปใช้กับทั้งไดเรกทอรีที่ไฟล์นี้อยู่ รวมถึงไฟล์และไดเรกทอรีย่อยทั้งหมดภายในไดเรกทอรีนั้น การเปลี่ยนแปลงใด ๆ ที่ทำในไฟล์ .htaccess จะมีผลทันทีโดยไม่ต้องรีสตาร์ทเซิร์ฟเวอร์

วิธีค้นหาไฟล์ .htaccess

วิธีค้นหาไฟล์ .htaccess:  

1. ไปที่บัญชี Spaceship ของคุณ >> เลือก Hosting Manager ใน Launchpad >> Manage ถัดจากแผนโฮสติ้ง >> Files and Storage >> Manage Files ใกล้ชื่อเว็บไซต์

2. คุณจะถูกเปลี่ยนเส้นทางไปยังโฟลเดอร์รากของโดเมน 

3.  หากต้องการแก้ไขไฟล์ .htaccess สำหรับโดเมน ให้ค้นหาไฟล์ .htaccess ในโฟลเดอร์รากของโดเมน คลิกขวาแล้วเลือก Edit :


หมายเหตุ: ตรวจสอบให้แน่ใจว่าเปิดใช้งาน "Show Hidden Files (dotfiles)" ในเมนู Settings:


4. หากไม่มีไฟล์ .htaccess ใน File Manager คุณสามารถสร้างไฟล์ใหม่ได้ด้วยปุ่ม + File:


5. คุณพร้อมที่จะเพิ่มกฎกำหนดค่าของคุณเองและบันทึกแล้ว
   

รายการกฎ .htaccess ที่ใช้บ่อย

การบล็อก 

วิธีนี้ช่วยให้คุณบล็อกผู้ใช้ตามที่อยู่ IP หรือโดเมน เหมาะอย่างยิ่งสำหรับการจำกัดการเข้าถึงจากผู้เยี่ยมชมที่ไม่ต้องการ หรือจำกัดการเข้าถึงบางส่วนของเว็บไซต์ เช่น พื้นที่ผู้ดูแลระบบ ให้เฉพาะเจ้าของเท่านั้น

หากต้องการตั้งค่ากฎการบล็อกเฉพาะ ให้สร้างไฟล์ .htaccess พร้อมเนื้อหาดังนี้:

(สำหรับอนุญาตให้ทุกคนเข้าใช้งาน ยกเว้นผู้ใช้ที่มี IP X.X.X.X)

<RequireAll>

Require all granted

Require not ip X.X.X.X

</RequireAll>

(สำหรับบล็อกผู้เยี่ยมชมทั้งหมด ยกเว้น IP X.X.X.X และ Y.Y.Y.Y ที่ระบุ)

<RequireAll>

Require all denied

Require ip X.X.X.X

Require ip Y.Y.Y.Y

</RequireAll>

หมายเหตุ: ห้ามใช้คำสั่ง Allow, Deny และ Order ที่เลิกใช้แล้วร่วมกับคำสั่งใหม่ Require เด็ดขาด.

Mod_Rewrite (กฎเปลี่ยนเส้นทาง)

Mod_Rewrite กำหนดวิธีการแสดงหน้าเว็บและ URL ให้กับผู้เยี่ยมชม

โดยปกติ Mod_Rewrite จะจับคู่ URL กับเส้นทางไฟล์ในระบบ แต่ก็สามารถเปลี่ยนเส้นทาง URL หนึ่งไปยังอีก URL หนึ่งได้เช่นกัน

ก่อนตั้งค่าการเปลี่ยนเส้นทาง ควรเลือกประเภทการเปลี่ยนเส้นทางที่เหมาะสมกับความต้องการของคุณ:

  • เปลี่ยนเส้นทางถาวร (301): การเปลี่ยนเส้นทางนี้จะส่งรหัสสถานะ 301 ซึ่งหมายความว่าหน้านี้ถูกย้ายถาวรแล้ว เบราว์เซอร์จะเก็บแคชไว้ และแจ้งให้เครื่องมือค้นหาและ user agent อัปเดต URL ในฐานข้อมูล นี่เป็นประเภทการเปลี่ยนเส้นทางที่ใช้บ่อยที่สุด

  • เปลี่ยนเส้นทางชั่วคราว (302): การเปลี่ยนเส้นทางนี้จะส่งรหัสสถานะ 302 ซึ่งหมายความว่าการย้ายเป็นการชั่วคราว เบราว์เซอร์จะไม่เก็บแคชการเปลี่ยนเส้นทางนี้ และแม้ว่าจะเปลี่ยนเส้นทางผู้เยี่ยมชมและเครื่องมือค้นหา แต่หน้าต้นฉบับจะยังคงถูกจัดทำดัชนี แนะนำให้ใช้การเปลี่ยนเส้นทางประเภทนี้ เว้นแต่คุณจะแน่ใจว่า URL จะไม่เปลี่ยนในอนาคต

ด้านล่างนี้คือรายการการเปลี่ยนเส้นทางที่พบบ่อยและมีประโยชน์ซึ่งสามารถตั้งค่าผ่านไฟล์ .htaccess ได้:

เปลี่ยนเส้นทางถาวรจาก example1.com ไปยัง example2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^(.*)$ "http\:\/\/example2\.com/$1" [R=301,L]

เปลี่ยนเส้นทางชั่วคราวจาก exampledomain1.com ไปยัง exampledomain2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^(.*)$ "http\:\/\/example2\.com\/" [R=302,L]

หมายเหตุ: ด้านล่างนี้คือตัวอย่างการเปลี่ยนเส้นทางถาวร สามารถกำหนดการเปลี่ยนเส้นทางชั่วคราวได้โดยเปลี่ยน [R=301,L] เป็น [R=302,L] ที่ท้ายโค้ด (หากจำเป็น)

เปลี่ยนเส้นทางจาก example1.com/subfolder ไปยัง example2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^subfolder/$ "http\:\/\/example2\.com\/" [R=301,L]

เปลี่ยนเส้นทางจาก HTTP เป็น HTTPS สำหรับ example.com

RewriteEngine On

RewriteCond %{HTTPS} !=on

RewriteRule .* https://example.com%{REQUEST_URI} [R,L]

หรือ

RewriteCond %{SERVER_PORT} 80

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example\.com$

RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

เปลี่ยนเส้นทางจาก non-WWW เป็น WWW

  • สำหรับทุกโดเมน ไฟล์ .htaccess จะมีผล:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

  • สำหรับโดเมนที่ระบุ:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]

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

เปลี่ยนเส้นทางจาก WWW เป็น non-WWW

  • สำหรับทุกโดเมน ไฟล์ .htaccess จะมีผล:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

  • สำหรับโดเมนที่ระบุ:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]

RewriteRule (.*) http://example.com/$1 [R=301,L]

เปลี่ยนเส้นทางทุกหน้าของ example.com ไปยังหน้าที่ตรงกันของ domain.com

RedirectMatch 301 ^/(.*)$ http://domain.com/$1

หมายเหตุ: ชื่อหน้าทั้งหมดต้องตรงกันทั้งสองโดเมน มิฉะนั้นการเปลี่ยนเส้นทางจะนำไปสู่ข้อความ "Page not Found"

เปลี่ยนเส้นทางหน้าหนึ่งไปยัง URL ใหม่

Redirect 301 /old_page.html http://www.domain.com/new_page.html

หมายเหตุ: เทคนิคนี้มีประโยชน์สำหรับเปลี่ยนเส้นทางหน้าที่ถูกลบไปยังข้อผิดพลาด 404 หรือปรับปรุง SEO หลังจากอัปเดตข้อมูลอ้างอิงเนื้อหา

การอนุญาต/การยืนยันตัวตน 

กฎประเภทนี้ใช้กำหนดข้อจำกัดด้านความปลอดภัยสำหรับไดเรกทอรีหรือไดเรกทอรีย่อย คุณสามารถตั้งรหัสผ่านป้องกันไดเรกทอรี เพื่อให้ผู้เยี่ยมชมที่พยายามเข้าถึงต้องกรอกชื่อผู้ใช้และรหัสผ่าน

วิธีตั้งค่าการป้องกันนี้:  

1. สร้างไดเรกทอรีที่ต้องการป้องกันภายในโฟลเดอร์ /home/cpanel_user/.htpasswds/ (เช่น สำหรับ domain.com/test เส้นทางคือ .htpasswds/domain.com/test/)

2. ในไดเรกทอรีนี้ ให้สร้างไฟล์ passwd และเพิ่มข้อมูลเข้าสู่ระบบที่เข้ารหัสผ่าน ตัวสร้างออนไลน์.

3. เพิ่มคำสั่งต่อไปนี้ลงในไฟล์ .htaccess:

AuthType Basic

AuthName "Directory Name"

AuthUserFile "/home/cpanel_user/.htpasswds/public_html/test/passwd"

require valid-user

หน้าข้อผิดพลาดแบบกำหนดเอง

ฟีเจอร์นี้ช่วยให้คุณสร้างหน้าข้อผิดพลาดเฉพาะสำหรับเว็บไซต์ของคุณ เป็นตัวเลือกที่มีประโยชน์เพราะช่วยให้คุณแสดงข้อความข้อผิดพลาดที่สอดคล้องกับธีมเว็บไซต์ หากมี URL ที่เสีย ช่วยหลีกเลี่ยงการแสดงข้อผิดพลาดเริ่มต้น '404 File Not Found' และแทนที่ด้วยหน้าข้อผิดพลาดที่ออกแบบเองพร้อมคำแนะนำให้ผู้ใช้กลับไปยังเนื้อหาเว็บไซต์ของคุณ ป้องกันความสับสน

วิธีตั้งค่าหน้าข้อผิดพลาดแบบกำหนดเอง ให้เพิ่มข้อความต่อไปนี้ลงในไฟล์ .htaccess:

ErrorDocument 404 /404.html

บรรทัดนี้สั่งให้เว็บเซิร์ฟเวอร์ Apache โหลดไฟล์ 404.html ที่อยู่ในไดเรกทอรีรากของโดเมนทุกครั้งที่เกิดข้อผิดพลาด 404 (File Not Found)

หมายเหตุ: หากต้องการสร้างหน้าข้อผิดพลาดแบบกำหนดเองสำหรับข้อผิดพลาดอื่น (เช่น 403 หรือ 500) เพียงแค่เปลี่ยน 404 เป็นรหัสข้อผิดพลาดที่ต้องการ และ /404.html เป็นเส้นทางไปยังไฟล์ข้อผิดพลาดของคุณเอง

การปิดใช้งานกฎ .htaccess ที่มีอยู่

หากคุณต้องการปิดใช้งานกฎที่มีอยู่ชั่วคราว เช่น เพื่อทดสอบ คุณสามารถคอมเมนต์กฎเหล่านั้นได้อย่างง่ายดาย เพียงแค่เพิ่มเครื่องหมาย # ที่ต้นบรรทัด

อีกทางเลือกหนึ่ง คุณสามารถปิดใช้งานทีละบรรทัดหรือเป็นกลุ่มโดยเลือกและใช้ทางลัด Ctrl + / ได้

จำเป็นต้องใช้อีเมลที่ถูกต้อง