เส้นทาง URL ควรคำนึงถึงตัวพิมพ์เล็กหรือไม่


11

URL เว็บไซต์ของฉันไม่ตรงตามตัวพิมพ์ใหญ่ - เล็ก ตัวอย่างเช่นลิงก์ทั้งสองนี้แสดงหน้าเดียวกันทุกประการ:

  • http://example.com/about
  • http://example.com/About

อย่างไรก็ตามเมื่อดูที่เว็บไซต์ wordpress.org ฉันสังเกตว่า URL เป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ตัวอย่างเช่นลิงค์ที่สองด้านล่างคือหน้าข้อผิดพลาด 404:

  • http://wordpress.org/about
  • http://wordpress.org/About

ความคิดของฉันคือการทำให้ URL ของเว็บไซต์ของฉันเป็นกรณี ๆ ไป นอกเหนือจากปัญหาที่ชัดเจนของการหลีกเลี่ยงเนื้อหาที่ซ้ำกันข้อดีและข้อเสียของการมี URL ที่เป็นตัวพิมพ์เล็กหรือใหญ่คืออะไร

ปรับปรุง

Google ดูเหมือนจะใช้นโยบาย URL ที่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ใน URL ของตัวเอง ตัวอย่างเช่นลิงค์ที่สองด้านล่างคือ 404:

  • http://google.com/doodles
  • http://google.com/Doodles

อัปเดต 2

ขอบคุณสำหรับคำตอบของคุณ ฉันตัดสินใจใช้คำแนะนำที่กล่าวถึงในคำตอบที่ยอมรับและใช้การเปลี่ยนเส้นทาง 301 ในกรณีที่จำเป็น ตั้งแต่ฉันทำงานกับ WordPress, การแก้ปัญหารหัสของฉันมีดังนี้ (ในกรณีที่ใครสนใจ):

function force_lowercase_urls() {

    if ( is_admin() )
        return;

    if ( preg_match( '/[A-Z]/', $_SERVER['REQUEST_URI'] ) ) {

        wp_redirect( strtolower( $_SERVER['REQUEST_URI'] ), 301 );
        exit();
    }

}
add_action( 'init', 'force_lowercase_urls' );

1
But wouldn't that result in duplicate content? – henrywrightคุณไม่ต้องกังวลเกี่ยวกับลิงค์ที่ซ้ำกันหากเว็บไซต์ของคุณใช้ลิงค์ที่ยอมรับได้อย่างถูกต้องและคุณสามารถเข้าถึงได้ 1 ล้านหน้าและไม่ได้รับผลกระทบจากเนื้อหาที่ซ้ำกัน
Simon Hayter

@bybe หากคุณมีวิธีเข้าถึงหลายล้านหน้า Googlebot จะไม่สามารถรวบรวมข้อมูลเว็บไซต์ของคุณได้ดี การมีหน้าเว็บที่เข้าถึงได้หลายวิธีนั้นไม่น่าจะเป็นอันตรายได้
Stephen Ostermiller

คำตอบ:


6

ระบบไฟล์ของระบบปฏิบัติการที่ใช้กันอย่างแพร่หลายที่สุดสองระบบสำหรับการให้บริการเนื้อหาเว็บมีการตั้งค่าที่แตกต่างกันมากสำหรับความไวตัวพิมพ์เล็ก - ใหญ่ของ URL ตามค่าเริ่มต้น ไม่ว่า URL ของคุณจะตรงตามตัวพิมพ์เล็กหรือใหญ่นั้นเป็นไปได้ว่าเป็นฟังก์ชันที่คุณใช้อยู่หรือไม่:

  • Microsoft IIS ที่ทำงานบน Windows - URL ที่ไม่ต้องสนใจตัวพิมพ์เล็ก - แสดงเนื้อหาเดียวกันโดยไม่คำนึงถึงการใช้ตัวพิมพ์ใหญ่
  • Apache HTTPD Serverทำงานบน Linux - ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ - ให้ข้อผิดพลาด 404 ไม่พบข้อผิดพลาดสำหรับการใช้อักษรตัวพิมพ์ใหญ่ที่ไม่ถูกต้อง

ในความคิดของฉันไม่มีค่าเริ่มต้นที่เหมาะ:

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

ทางออกที่ดีที่สุดคือการแสดงหน้าเฉพาะเมื่อ URL เป็นตัวพิมพ์ใหญ่อย่างถูกต้อง สำหรับการใช้อักษรตัวพิมพ์ใหญ่ที่ไม่ถูกต้องผู้ใช้ควรเปลี่ยนเป็น 301 เพื่อเปลี่ยนเป็นตัวพิมพ์ใหญ่ที่ต้องการ มีบางวิธีที่สามารถทำได้:


1
ฉันรู้สึกว่านี่เป็นสิ่งประดิษฐ์ของ DOS และ Windows ที่เบี่ยงเบนไปจากมาตรฐานก่อนหน้าของความไวของเคสที่เรามีในสภาพแวดล้อม Unix
อาทิตย์

1
ไม่ว่า Apache จะเป็นแบบตรงตามตัวพิมพ์ใหญ่หรือเล็กสำหรับคำร้องขอที่แม็พกับระบบไฟล์นั้นขึ้นอยู่กับระบบไฟล์พื้นฐานไม่ใช่ Apache เอง หากใช้ Apache บน Windows ให้ทำการร้องขอ/iNdEx.HtMlหรือ/InDeX.hTmlจะคืนค่าทั้งสอง/index.html(ให้/index.htmlเป็นไฟล์ฟิสิคัลในระบบไฟล์)
MrWhite

1
ในความเป็นจริงนี้ดูเหมือนจะเป็นเหมือนกันสำหรับ IIS
MrWhite

1
IIS จะทำงานบน Windows (AFAIK) เสมอดังนั้นคำขอระบบไฟล์จะไม่ตรงตามตัวพิมพ์ใหญ่ - เล็ก อย่างไรก็ตามไซต์จำนวนมากจะกำหนดเส้นทาง (เขียนใหม่) URL ผ่านตัวควบคุมด้านหน้าบางชนิด - ในกรณีนี้คำขออาจไม่ได้แมปไปยังไฟล์ที่มีอยู่จริงในระบบแฟ้มและดังนั้น URL อาจเป็นแบบตรงตามตัวพิมพ์ -insensitive) - ซึ่งโดยทั่วไปเหมือนกับ Apache (เมื่อทำงานบน Windows) (?)
MrWhite

2
ฉันสะดุดที่นี่จริง ๆ ในขณะที่ค้นคว้าคำถามล่าสุด / ไม่ว่าง " ทำไม URL เป็นตัวพิมพ์เล็กหรือใหญ่ " ดูเหมือนว่าวลีเช่น "IIS is case-insensitive" (กล่าวถึงหลายครั้งในเธรดอื่น ๆ ) นั้นแพร่หลายจนความเชื่อทั่วไปดูเหมือนว่า URL บน IIS มักจะเป็นตัวพิมพ์เล็ก - อย่างน้อยก็คือความประทับใจที่ฉันได้รับ - ดูเหมือนจะไม่เป็นเช่นนั้น
MrWhite

4

นี่คือตำแหน่งของ Google จากเซสชันแชทสดที่เก็บถาวร(ตอนนี้ลิงก์ตายแล้ว):

* การใช้อักษรตัวพิมพ์ใหญ่ที่ไม่สอดคล้องกันของ URL ทำให้เกิดปัญหาเนื้อหาซ้ำซ้อนและลดสัดส่วนหน้า ตัวอย่างเช่น www.site.com/abc vs www.site.com/Abc บนโฮสต์ Windows เหล่านี้เป็นหน้าเดียวกัน แต่เป็นหน้าอื่นในโฮสต์ Unix

JohnMu: สวัสดีจอห์นตามมาตรฐานที่มีอยู่ URL จะคำนึงถึงขนาดตัวพิมพ์ดังนั้นใช่สิ่งเหล่านี้จะถูกมองว่าเป็น URL แยกต่างหาก เนื่องจากเนื้อหาใน URL เหมือนกันเราจึงรับรู้โดยทั่วไปและเก็บไว้เพียงหนึ่งรายการเท่านั้น อย่างไรก็ตามเราขอแนะนำให้คุณพยายามให้ลิงก์ทั้งหมดไปยัง URL หนึ่งเวอร์ชัน โปรดทราบว่าสิ่งนี้ใช้ได้กับไฟล์ robots.txt ด้วย *

ทีม IE ขอแนะนำให้เลือกแบบแผนการจัดวางไฟล์และปฏิบัติตามอย่างเคร่งครัดเนื่องจากสามารถปรับปรุงประสิทธิภาพได้


-2

RFC 3986 6.2.2.1กำหนด URIs เป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ดังนั้นจึงไม่ควรทำให้เป็นกรณี ๆ ไปเช่น wordpress.org


แต่นั่นจะไม่ส่งผลให้มีเนื้อหาซ้ำซ้อนใช่หรือไม่

ไม่จริงเพราะเครื่องมือค้นหาควรใช้ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

ฉันคิดว่าคำถามในขณะนี้คือวิธีการที่จะค้นหาว่าเครื่องมือค้นหาดู URL บนและล่างที่ต่ำกว่าเทียบเท่า? ใช้ Google เป็นตัวอย่าง: ลองใช้google.com/Doodlesและgoogle.com/doodles

10
RFC นั้นระบุเฉพาะกรณีของสามส่วนของ URL 1 - โปรโตคอล ( http://) - ตัวพิมพ์เล็กและใหญ่ 2 - ชื่อโฮสต์ ( example.com) - ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ให้เป็นมาตรฐานเป็นตัวพิมพ์เล็ก 3. เปอร์เซ็นต์อักขระที่เข้ารหัส ( %3F) - ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ส่วนที่เหลือของ URL นั้นจะต้องตรงตามตัวพิมพ์
Stephen Ostermiller
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.