ไฟล์ .htaccess เป็นไฟล์กำหนดค่าระดับไดเรกทอรีที่รองรับโดยเว็บเซิร์ฟเวอร์ Apache ช่วยให้คุณสามารถปรับแต่งการตั้งค่าเว็บเซิร์ฟเวอร์ (เช่น เปิดหรือปิดฟีเจอร์) สำหรับบัญชีเฉพาะ โดยไม่กระทบกับการตั้งค่าระดับเซิร์ฟเวอร์โดยรวม
ไฟล์นี้จะนำการตั้งค่าไปใช้กับทั้งไดเรกทอรีที่ไฟล์นี้อยู่ รวมถึงไฟล์และไดเรกทอรีย่อยทั้งหมดภายในไดเรกทอรีนั้น การเปลี่ยนแปลงใด ๆ ที่ทำในไฟล์ .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. คุณพร้อมที่จะเพิ่มกฎกำหนดค่าของคุณเองและบันทึกแล้ว
วิธีนี้ช่วยให้คุณบล็อกผู้ใช้ตามที่อยู่ 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 กำหนดวิธีการแสดงหน้าเว็บและ 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 เป็นเส้นทางไปยังไฟล์ข้อผิดพลาดของคุณเอง
หากคุณต้องการปิดใช้งานกฎที่มีอยู่ชั่วคราว เช่น เพื่อทดสอบ คุณสามารถคอมเมนต์กฎเหล่านั้นได้อย่างง่ายดาย เพียงแค่เพิ่มเครื่องหมาย # ที่ต้นบรรทัด
อีกทางเลือกหนึ่ง คุณสามารถปิดใช้งานทีละบรรทัดหรือเป็นกลุ่มโดยเลือกและใช้ทางลัด Ctrl + / ได้