วิธีที่ถูกต้องในการใช้ index.html


9

ฉันมีปัญหามากมายที่ฉันต้องการฟังความคิดเห็นของคุณดังนั้นฉันหวังว่าฉันจะอธิบายได้ดีพอ ฉันควรทราบด้วยว่าฉันเพิ่งเริ่มต้นพร้อมกับความรู้เกี่ยวกับ HTML และ CSS เท่านั้นถึงแม้ว่าฉันเกือบจะแน่ใจว่ามีวิธีง่ายๆในการใช้ PHP ที่มีประสิทธิภาพ แต่ก็ไม่สามารถช่วยฉันได้

สมมติว่าผมมีบล็อกส่วนตัวของฉันเกี่ยวกับที่อยู่example.com/blog.htmlและมีการเชื่อมโยงไปย่อยหลายบล็อก- example.com/blog/math.html, example.com/blog/coding.htmlฯลฯ ดังนั้นโฟลเดอร์รากของฉันมีblog.htmlและblogโฟลเดอร์ที่blogโฟลเดอร์ตัวเองมีไฟล์และmath.htmlcoding.html

แรกของทั้งหมดที่ผมได้เรียนรู้ (จากGoogle เครื่องมือเว็บมาสเตอร์ ) ที่สำหรับ SEO และวัตถุประสงค์สุนทรียภาพมันเป็นเรื่องดีที่จะรวมกันexample.com.comและexample.com/index.htmlโดยการเพิ่มแอตทริบิวต์ลงในแหล่งของ_rel="canonical"_ index.htmlการใช้ลูกเล่นอื่น ๆ (เช่นการเชื่อมโยง../และ./) ฉันได้กำจัดสิ่งที่น่าเกลียดindex.htmlปรากฏในที่อยู่เว็บของฉัน

และตอนนี้ฉันสงสัยว่าเคล็ดลับนี้สามารถใช้ได้ไม่เพียง แต่สำหรับโฟลเดอร์รูท แต่สำหรับโฟลเดอร์ใด ๆ ฉันหมายถึงฉันจะย้ายฉันblog.htmlไปที่blogโฟลเดอร์เปลี่ยนชื่อเป็นindex.htmlและเพิ่มrel="canonical"เพื่อรวมเข้าexample.com/blog/index.htmlด้วยexample.com/blog/กัน
เคล็ดลับนี้จะเปลี่ยนที่อยู่ของบล็อกของฉันจากเข้าexample.com/blog.htmlexample.com/blog/

ยังไม่เสร็จ! ฉันกำลังประสบปัญหาเกี่ยวกับหุ่นยนต์ google จัดทำดัชนีโฟลเดอร์ ดังนั้นเมื่อฉันพิมพ์site:example.com/ลงในการค้นหาของ Google ลิงก์ไปยังโฟลเดอร์ของฉันที่example.com/blog/มีไฟล์ดิบไอคอน ฯลฯ จะปรากฏในผลลัพธ์อื่น ๆ ฉันเดาว่ายังมีวิธีอื่น ๆ ในการแก้ไข แต่ IMHO การเปลี่ยนแปลงที่กล่าวถึงข้างต้นจะทำเคล็ดลับด้วยเช่นกัน - index.htmlในโฟลเดอร์บล็อกจะป้องกันผู้ใช้จากการดูเนื้อหาดิบจริงของโฟลเดอร์นั้นจะปรากฏขึ้นเท่านั้น ลิงก์ที่ถูกต้องexample.com/blog/ในการค้นหา google และ (ฉันหวังว่า) _rel="canonical"_จะทำให้ลิงก์ที่สองที่ไม่ต้องการexample.com/blog/index.htmlไม่ปรากฏในผลการค้นหา

ดังนั้นคำถามของฉันคือ:

  1. เป็นวิธีปฏิบัติที่ดีที่จะมีindex.htmlไฟล์ในทุกโฟลเดอร์ย่อยหรือมีจุดประสงค์เพื่อให้อยู่ในโฟลเดอร์รูทเท่านั้นหรือไม่?
  2. มีข้อเสียหรือปัญหาที่อาจเกิดขึ้นเมื่อใช้วิธีที่สอง " ดัชนีในทุก ๆ โฟลเดอร์ " หรือไม่?
  3. คุณต้องการเลือกโครงสร้างใดวิธีหนึ่งจากสองวิธีที่อธิบายไว้ข้างต้น

สำหรับคำชี้แจงของฉันเครื่องมือค้นหาดูsite.com/blogและsite.com/blog/index.htmlว่าเป็น 2 ไฟล์ที่แตกต่างกันหรือไม่ หากมีการใช้ลิงก์ที่มีทั้ง URL อยู่มีโอกาสที่คุณจะแยกสิทธิ์การใช้ลิงค์ของน้ำ / หน้าระหว่างสองที่ตั้งหรือไม่?

เท่าที่ฉันรู้เครื่องมือค้นหา (อย่างน้อย Google) เห็นว่าเป็นไฟล์ที่แตกต่างกันสองไฟล์ เนื่องจากจริง ๆ แล้วสามารถแยกแยะได้ - ลิงก์ทั้งสองอาจแตกต่างกันในเครื่องหมายสแลชเดียวเท่านั้น (อ่านเพิ่มเติมได้ที่นี่ ) และใช่ถ้าคุณใช้ลิงค์สองลิงค์ที่แตกต่างกันไปยังหน้าเดียวอันดับทั้งหมดของเพจนั้นจะแยกระหว่างลิงค์ทั้งสองและหน้าของคุณจะลดอันดับลงครึ่งหนึ่ง นั่นเป็นเหตุผลที่ฉันแนะนำลิงก์ canonicalization ที่กล่าวถึงเพื่อป้องกันการรั่วไหลเหล่านั้น
Jeyekomon

คำตอบ:


13

เหตุผลที่เราใช้index.htmlหรือhome.htmlสืบเนื่องจากมันเป็นเพราะซอฟต์แวร์เว็บเซิร์ฟเวอร์เองก็ค้นหาและให้บริการ ตัวอย่างเช่น:

นี่คือไม่ถูกต้อง: (www-directory)

/var/www/
|_blog.html
|_blog/
  |_math.html
  |_page2.html
  |_page3.html
  |_(...)

ในความเป็นจริงนี้จะได้รับหน้าที่เป็นรายการหน้าโฟลเดอร์และไฟล์ (ไม่ใช่สิ่งที่คุณต้องการ) คุณสามารถลองโครงสร้างนี้ แต่ยังสร้างไฟล์ index.html ถัดจาก blog.html สังเกตว่าจะไม่ให้บริการ blog.html เว้นแต่คุณจะระบุhttp://www.site.com/blog.html) นี่คือเหตุผลที่http://www.google.com/แสดงหน้าเว็บโดยที่คุณไม่ต้องระบุhttp://www.google.com/index.html

นี่คือ VALID:

/var/www/
|_index.html (renamed blog.html to index.html)
|_blog/
  |_math.html
  |_page2.html
  |_page3.html
  |_(...)

สิ่งนี้จะให้บริการblog.htmlไฟล์ของคุณในฐานะหน้าแรก (ไม่แสดงรายการโฟลเดอร์ / ไฟล์ทั้งหมดในไดเรกทอรีนั้น)

ซอฟต์แวร์เว็บเซิร์ฟเวอร์มีรายการชื่อไฟล์พิเศษที่จะใช้เป็นโฮมเพจหรือหน้าหลักของโฟลเดอร์ (จากประสบการณ์ของฉันindex.htmlจะมีความสำคัญมากกว่า index.php ดังนั้นหากคุณมีindex.htmlและindex.phpในโฟลเดอร์ index.html เป็นสิ่งที่สาธารณชนจะเห็น) แน่นอนว่าทุกอย่างสามารถเปลี่ยนแปลงได้และคุณสามารถตั้งblog.htmlให้เป็นที่รู้จัก "ดัชนี".

พูดถึงความคิดเห็นของคุณ:

"เคล็ดลับนี้จะเปลี่ยนที่อยู่ของบล็อกของฉันจาก www.xxx.com/blog.html เป็น www.xxx.com/blog/"

สิ่งนี้จะทำได้โดยการย้ายblog.htmlไปที่/blog/และเปลี่ยนชื่อเป็น index.html

โครงสร้างใหม่ของคุณจะเป็น:

/var/www/
|_blog/
  |_index.html (renamed from blog.html)
  |_math.html
  |_page2.html
  |_page3.html
  |_(...)

สิ่งนี้ควรทำหน้าที่อย่างถูกต้องhttp://www.site.com/blog/เพื่อแสดงเนื้อหาของ blog.html ที่เราเปลี่ยนชื่อเป็นเพื่อindex.htmlให้ซอฟต์แวร์สามารถตั้งค่าเป็นดัชนีของไดเรกทอรีของคุณ/blog/

ตอนนี้คุณสามารถใส่และจัดindex.htmlเก็บไฟล์ลงในรูทของเว็บไซต์ของคุณhttp://www.site.com/(index.html)เพื่อเชื่อมโยงไปยัง/blog/และสิ่งอื่น ๆ ที่คุณต้องการ

ตอบคำถามของคุณโดยเฉพาะในข้อความสั้น ๆ :

  1. เป็นวิธีปฏิบัติที่ดีที่จะมีไฟล์ index.html ในทุกโฟลเดอร์ย่อยหรือตั้งใจที่จะอยู่ในโฟลเดอร์รูทเท่านั้น?

    ใช่เพราะช่วยป้องกันไม่ให้คนอื่นเห็นไฟล์ที่อยู่ในไดเรกทอรีของคุณ คุณสามารถป้องกันได้ด้วย.htaccessไฟล์ที่มีOptions -Indexes

  2. มีข้อเสียหรือปัญหาที่อาจเกิดขึ้นเมื่อใช้วิธีที่สอง "ดัชนีในทุก ๆ โฟลเดอร์" หรือไม่?

    ไม่มีที่ฉันสามารถคิดได้

  3. คุณต้องการเลือกโครงสร้างใดวิธีหนึ่งจากสองวิธีที่อธิบายไว้ข้างต้น

    ฉันมักจะมีindex.htmlหรือindex.phpไฟล์ในรากโฟลเดอร์ย่อยตามหมวดหมู่ (เช่นforumหรือnewsหรือloginอื่น ๆ ) และจากนั้นเรียงลำดับของดัชนีภายในแต่ละเหล่านั้น


ขอบคุณสำหรับคำตอบที่ครอบคลุม! การเข้าถึงโฟลเดอร์สาธารณะของฉันและความจริงที่ว่าพวกเขาได้รับการจัดทำดัชนีโดย google ทำให้ฉันค่อนข้างโกรธดังนั้นเมื่อฉันรู้ว่าไม่มีปัญหากับ "ดัชนีในทุก ๆ โฟลเดอร์" เคล็ดลับฉันจะเปลี่ยนเว็บไซต์ของฉันด้วยวิธีนี้ ฉันหวังว่าเคล็ดลับ rel = "canonical" จะใช้ได้และดัชนีทั้งหมดนั้นจะไม่ปรากฏในการค้นหาของ Google ... : D
Jeyekomon

6

ข้อกำหนดทางเทคนิคสำหรับ index.html คือดัชนีไดเรกทอรีสำหรับ Apache และเอกสารเริ่มต้นสำหรับ IIS คำสั่ง Apache อื่น ๆ ที่น่าสนใจคือคำสั่งตัวเลือก ตามที่ระบุไว้ในเอกสารเมื่อOptions Indexesมีการตั้งค่า:

หาก URL ที่แมปไปยังไดเรกทอรีถูกร้องขอและไม่มี DirectoryIndex (เช่น index.html) ในไดเรกทอรีนั้น mod_autoindex จะส่งคืนรายการที่จัดรูปแบบของไดเรกทอรี

เมื่อฉันติดตั้งเว็บไซต์ที่ไม่ได้ใช้ระบบจัดการเนื้อหาการตั้งค่าที่ฉันต้องการคือการมีหน้าเนื้อหาหนึ่งหน้าต่อไดเรกทอรี หน้านั้นเป็นดัชนีไดเรกทอรี (เอกสารเริ่มต้น) สำหรับไดเรกทอรี ลิงก์ทั้งหมดในเว็บไซต์จะลิงก์ไปยังไดเรกทอรีและจบด้วยเครื่องหมายสแลช (เช่นhttp://example.com/blog/แทนhttp://example.com/blog/index.htmlหรือ./blog/แทน./blog/index.html) เฉือนท้ายเป็นสิ่งสำคัญที่จะหลีกเลี่ยงสิ่งที่เรียกกันทั่วไปว่าเป็นการเปลี่ยนเส้นทางมารยาท (หากไม่ได้ใส่เครื่องหมายสแลชต่อท้ายทุกอย่างยังคงแก้ไขได้อย่างถูกต้อง แต่จำนวนคำขอ HTTP และแบนด์วิดท์เพิ่มขึ้น)

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

สำหรับประเภทไฟล์อื่น ๆ :

  • ไฟล์ CSS ทั้งหมดอยู่ในไดเรกทอรี css ในรูทของเว็บไซต์
  • ไฟล์ภาพทั้งหมดอยู่ในไดเรกทอรีรูปภาพหรือไดเรกทอรีย่อยในรูทของเว็บไซต์
  • ไฟล์ JavaScript ทั้งหมดอยู่ในไดเรกทอรีสคริปต์ในรูทของเว็บไซต์
  • แฟลชและไฟล์ภาพยนตร์อื่น ๆ ทั้งหมดอยู่ในไดเรกทอรีวิดีโอหรือไดเรกทอรีย่อยในรูทของเว็บไซต์

บนเซิร์ฟเวอร์ Apache ฉันปิดการใช้งานOptions Indexesสำหรับไดเรกทอรีดังกล่าว บนเซิร์ฟเวอร์ Apache และ IIS ฉันไม่ได้ระบุดัชนีไดเรกทอรี (เอกสารเริ่มต้น) สำหรับไดเรกทอรีดังกล่าวข้างต้น ดังนั้นคำขอใด ๆ ของไดเรกทอรีส่งผลให้เกิดข้อผิดพลาด HTTP 403


เนื่องจากข้อ จำกัด การเชื่อมโยงทั้งสองข้อฉันจึงไม่สามารถรวมลิงก์ไปยังดัชนีไดเรกทอรีและเอกสารเริ่มต้นในคำตอบของฉันดังนั้นที่นี่คือ
Ryan Prechel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.