ทำไมส่วนขยายจึงมักถูกซ่อนอยู่ใน URL


20

หลายครั้งที่ผมเห็นว่าส่วนขยาย URL ที่ถูกซ่อนไว้ (เช่น.html, .php) แต่ไม่ทุกเว็บไซต์ที่ทำเช่นนี้

ทำไมผู้ดูแลเว็บจึงซ่อนส่วนขยาย เพื่อความปลอดภัยหรือไม่เพื่อให้ URL ดูสะอาดตาหรือเพื่อจุดประสงค์อื่น


คำตอบ:


29

มีสาเหตุหลายประการในการลบส่วนขยายจาก URL:

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

โปรดทราบว่าเว็บไซต์จำนวนมากจะถูกสร้างโดยระบบการจัดการเนื้อหา (CMS) ที่จะทำให้ URL /index.php?page=this-is-the-widget-pageที่มีลักษณะเช่นนี้ ที่น่าเกลียดโดยเฉพาะและมี cruft มากกว่าไกลแค่ขยาย การเขียนใหม่เพื่อลบindex.php?page=ทำให้ดีขึ้นมาก

ไม่จำเป็นต้องใช้ส่วนขยายบนเว็บเนื่องจากเซิร์ฟเวอร์จะส่งประเภทของเอกสารเป็นส่วนหัว เว็บเพจจะทำหน้าที่เป็นtext/htmlภาพที่เป็นหรือimage/png image/jpegวิธีนี้ทำให้เบราว์เซอร์ทราบวิธีแสดงเนื้อหาโดยไม่ใช้ส่วนขยายเพื่อพิจารณาว่า URL มีข้อความ HTML, PDF หรือรูปภาพ (สำหรับข้อมูลเพิ่มเติมดูบทความ Wikipedia ประเภทสื่ออินเทอร์เน็ต )

ผู้ดูแลเว็บบางคนเลือกที่จะใช้ส่วนขยายกับ URL ที่ตรงกับประเภทเนื้อหานี้ ดังนั้นtext/htmlเอกสารใด ๆ ที่จะมี.htmlนามสกุลและimage/pngเอกสารใด ๆ ที่จะมี.pngนามสกุล ซึ่งสามารถช่วยได้เมื่อบันทึก URL ไปยังระบบไฟล์ที่ข้อมูลเมตาเกี่ยวกับประเภทเนื้อหาของพวกเขาหายไป ในระบบไฟล์ส่วนใหญ่โปรแกรมที่เปิดไฟล์จะถูกเลือกโดยส่วนขยาย ดังนั้นแม้ว่าหน้าจะถูกเสิร์ฟโดย PHP เว็บมาสเตอร์บางเอานามสกุลและบางแทนที่โดย.php.html

นอกจากนี้ยังมีคำถามว่าURL นั้นน่าจะจบลงด้วยการต่อท้ายสแลช ( /) เมื่อไม่มีส่วนขยายที่มีการอภิปรายมากมายเกี่ยวกับ Stack Overflow หรือไม่


11
ในบางเฟรมเวิร์ก (เช่น MVC) URL จะไม่ระบุไฟล์ดังนั้นจึงไม่มีส่วนขยายที่จะซ่อน
Henrik Ripa

6

เว็บเซิร์ฟเวอร์ทั้งหมดมี "ไฟล์เริ่มต้น" หนึ่งไฟล์ขึ้นไป มันเป็นไฟล์ที่จะปรากฏเมื่อใดก็ตามที่ผู้เข้าชมไปที่ URL ที่ลงท้ายด้วยเครื่องหมายทับ/เช่นโฟลเดอร์

ถ้าชื่อแฟ้มเริ่มต้นบนเว็บเซิร์ฟเวอร์ของคุณindex.phpและผู้เข้าชมไปwww.example.com/pagename/พวกเขาจะจริงwww.example.com/pagename/index.phpเข้าถึง

หากไม่มีการติดตาม/เว็บเซิร์ฟเวอร์อาจเป็นเพียงการเขียน URL ใหม่เพื่อลบออกเนื่องจากไม่จำเป็น ในความเป็นจริงไซต์นี้ทำเช่นนั้น


2
ฉันไม่แน่ใจว่าคำถามคือ "อย่างไร" แต่ "ทำไม" Patrik คำตอบของคุณถูกต้องเกี่ยวกับวิธีการ สตีเฟ่นตอบคำถาม "ทำไม"
Brandt Solovij

4

นี่เป็นรูปแบบของ URI แบบ“ เจ๋ง ๆ ” ที่ฉันตั้งเป้าไว้ในเว็บไซต์ส่วนตัวของฉันเอง

โดยส่วนตัวแล้วเหตุผลที่ฉันเริ่มทำเช่นนั้น (และอาจมีอีกมากมายที่นักออกแบบเว็บไซต์ / นักพัฒนา!) คือหลังจากอ่านบทความ“ Cool URIs ไม่เปลี่ยนแปลง” - เอกสารนี้เขียนโดยพ่อผู้ก่อตั้งของ World Wide Web, Tim Berners -Lee

ในบทความที่มีชื่อเสียงของ Tim Berners-Lee โดยทั่วไปแล้วเขากล่าวถึงเหตุผลเดียวกับที่ Stephen Ostermillerได้รับคำตอบที่ดีเยี่ยมสำหรับคำถามนี้

เพื่อให้คำตอบที่เฉพาะเจาะจงมากขึ้นสำหรับคำถามหลักของคุณ“ ทำไมส่วนขยายถูกซ่อนอยู่ใน URL” ฉันก็จะบอกว่าเหตุผลหลักสำหรับฉันคือ:

1. เพื่อพิสูจน์ URI ในอนาคต:

ตัวอย่างเช่นมันอาจฟังดูเป็นความคิดที่ดีในเวลานั้นที่จะใช้ URI เช่น: http://www.example.com/page.pl ซึ่ง.plเป็นไฟล์ที่มีประโยชน์สำหรับสคริปต์ Perl อย่างไรก็ตาม thesedays นักพัฒนาเว็บส่วนใหญ่ใช้ ASP.NET หรือ PHP สำหรับแบ็กเอนด์สคริปต์เพื่อให้วัน แต่วันนี้ , http://www.example.com/page.php เสียงเหมือนความคิดที่ดีที่สุด PHP และ ASP / ASP.net จะกลายเป็นสมัยเก่า ดังนั้นความคิดที่ดีกว่าคือการลบส่วนขยายออกโดยสิ้นเชิง

2. การอ่านและจดจำ:

มันง่ายกว่ามากสำหรับ URI ที่“ เจ๋ง ๆ ” ที่จะส่งผ่านไปยังผู้คนด้วยวาจาบนกระดาษ (เช่นโฆษณานามบัตรเป็นต้น) ไม่ต้องพูดถึงว่าจะจดจำได้ง่ายกว่า

3. “ การแฮกข้อมูล” *

แม้ว่าฉันจะบอกว่าผู้ใช้ส่วนใหญ่ในทุกวันนี้อาจผ่านเครื่องมือค้นหาสำหรับทุกสิ่ง - ฉันเคยเห็นคนที่จะไปที่แถบที่อยู่และพิมพ์www.google.comแล้วใช้ Google พิมพ์ตามตัวอักษรwww.ebay.com! แต่ฉันคิดว่าถ้าฉันมีเว็บไซต์ที่ใช้สื่อมัลติมีเดีย URI http://www.example.com/videoบอกเป็นนัย ๆ ว่าส่วนเพลงสามารถพบได้ภายใต้ URI http://www.example.com/audioและอื่น ๆ (ฉันยังคงใช้แถบที่อยู่เพื่อไปยังเว็บไซต์ - ฉันค่อนข้าง“ โรงเรียนเก่า” เกี่ยวกับเรื่องแบบนั้น!)

* (โอ้!“ ความสามารถในการแฮ็ก” - คำนั้นยังมีอยู่รึยัง ! ตอนนี้ก็ทำได้ !) :-)

4. สุนทรียศาสตร์ **: เพื่อทำให้พวกเขาดูดีขึ้น! (โทษ OCD ของฉัน!)

อย่างไรก็ตามฉันได้สังเกตเห็นจากการอ่านผ่านเว็บไซต์ที่เกี่ยวข้องกับ SEO หลายแห่งซึ่งผู้ดูแลเว็บจำนวนมากได้ผนวกนามสกุลไฟล์ไปยัง URIs แบบไดนามิกเช่น:

URI ที่แท้จริงอาจเป็น: http://www.example.com/article

อย่างไรก็ตามผู้ดูแลเว็บจะทำการเขียนซ้ำเพื่อทำให้ URI“ ดู” คงที่เช่น: http://www.example.com/article.html

ตรรกะที่อยู่เบื้องหลังสิ่งนี้คือโดยทั่วไปแล้วเสิร์ชเอ็นจิ้นจะกำหนดอันดับที่สูงกว่าให้กับหน้าสแตติก (ซึ่งเห็นได้ชัดว่ามีโอกาสน้อยที่จะเปลี่ยนแปลง) (แม้ว่าฉันไม่ใช่ผู้เชี่ยวชาญในการทำ SEO แต่ส่วนตัวฉันไม่ได้ซื้อความคิดนี้ด้วยตัวเอง - ฉันคิดว่าด้วยความคิดที่อยู่เบื้องหลังอัลกอริทึมของ Google และ Bing แต่จะใช้เวลามากกว่าการขยายไฟล์ปลอมเล็กน้อย con แบบของคุณในตำแหน่งเสา SERP!)

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งชื่อ URIs ฉันขอแนะนำให้อ่านบทความเหล่านี้:

Tim Berners-Lee:

เคล็ดลับ W3C QA:

Brian Kelly (UK Web Focus / UKOLN - มหาวิทยาลัยบา ธ ):

หวังว่านี่จะช่วยได้!


2

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


ฉันเห็นด้วยกับความคิดเห็นของคุณ แต่ฉันคิดว่าการใช้ URIs เพื่อทำให้เทคโนโลยีแบ็กเอนด์ของคุณสับสนเนื่องจากมาตรการรักษาความปลอดภัยนั้นไม่มีประโยชน์ เมื่อเห็นแวบแรกคุณจะซ่อนเทคโนโลยีเฉพาะที่ใช้ น่าเสียดายที่คนเดียวที่จะ "หลอก" คือผู้ใช้ปลายทาง; บางอัน (ถ้าไม่ใช่มากที่สุด) ซึ่งไม่รู้ว่า URL คืออะไรพูดอย่างเดียวว่า ASP / PHP / etc สำหรับการขาดวลีที่ดีกว่าคุณเป็น“ การเทศนาในคณะนักร้อง”
Jordan Clark

1

คุณซ่อนนามสกุลของหน้าหรือไม่ผู้คนยังสามารถรู้ว่าคุณใช้เทคโนโลยีใดอยู่ โดยใช้ cURL จะไม่สามารถรับเทคโนโลยีของคุณได้โดยดึงข้อมูลส่วนหัว

curl -I -L rembatvideo.ga

จากนั้นคุณจะเห็นสิ่งต่าง ๆ เช่นเทคโนโลยีคำขอแคชการเชื่อมต่อและอีกมากมาย


0

เห็นด้วยอย่างเต็มที่ตามที่อธิบายโดย "Stephen Ostermiller" แต่ฉันต้องการจะกล่าวถึงเคล็ดลับที่อยู่เบื้องหลังที่จะซ่อนส่วนขยายของ URL และสำหรับสิ่งที่คุณต้องใช้กฎ. htaccessเขียนใหม่นี่คือสคริปต์ที่ช่วยคุณได้

เปลี่ยนเส้นทาง.phpคำขอภายนอกไปยัง URL ที่ไม่มีนามสกุล

RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.