เมื่อฉันเพิ่งเข้าใจ 404.asp ก่อนหน้านี้ฉันเคยเพ้อฝันที่จะเขียนรหัสโปรแกรมทั้งหมดลงใน 404.asp เพื่อตระหนักถึงสถานีที่จำลองหน้าเว็บคงที่
จนกว่าฉันจะเห็นเซิร์ฟเวอร์การถ่ายโอนของ ASP ความคิดในการสร้างหน้าคงที่ด้วย 404 จำลองหน้าคงที่ปรากฏในใจของฉัน .
<!-#รวมไฟล์ = bin/404_qury->
-
เลือก case bin_command
ถังขยะ
Server.transfer (bin/web)
case uploadfiles
Server.transfer (bin/send-stream)
กรณีอื่น
Server.transfer (bin/send-404)
สิ้นสุดเลือก
-
ฮิฮิเพื่อพูดอย่างชัดเจนว่ามันขึ้นอยู่กับ bin_command เพื่อตัดสินว่ามันใช้งานได้ดีมากหรือไม่ . ไม่มีการเขียนใหม่ใน PHP
ซอร์สโค้ดของ bin/404_Query มีดังนี้:
-
urls = mid (request.querystring, instr (request.querystring,: 80) +4)
ถ้า instr (urls,/)> 0 แล้ว
bin_command = ซ้าย (urls, instr (urls,/)-1)
getFile = แทนที่ (urls, bin_command &/,)
อื่น
bin_command = bin
สิ้นสุดถ้า
-
รหัสนี้เป็นหลักเพื่อกำหนดว่า BIN_COMMAND ถูกดำเนินการอะไรก่อน
เช่น: demo.com/index5.html จากนั้น bin_command = bin คุณสามารถรู้ได้
demo.com/uploadfiles/123456.gif (ไฟล์นี้สอดคล้องกับไฟล์/123456.gif) จากนั้น bin_command = uploadfiles คุณสามารถรู้ได้ว่าคุณสามารถให้มันกับ bin/send-stream คุณสามารถอ้างถึงบทความที่ฉันเขียนบทความ AP BinaryWrite และ ADODB.Stream
demo.com/111/222 จากนั้น bin_command = 111″ ไม่มีคำจำกัดความในกรณีที่เลือกมันเป็นอย่างอื่นและส่งไปยัง bin/send-404 สำหรับการประมวลผล
ด้วยวิธีนี้ผู้เข้าชมทั้งหมด (รวมถึง: Baidu, Google), เว็บไซต์นี้เป็นหน้าคงที่ เท่าที่ฉันรู้ 99.9%ของโฮสต์ IIS ในประเทศไม่สนับสนุน isapi_rewrite และฉันได้พบมันครั้งเดียวเพราะทรัพยากรร้ายแรงเกินไปและจะถูกยกเลิกในไม่ช้า
ต่อไปนี้เป็นสิ่งที่ฉันเห็นในการเรียนรู้ ASP ออนไลน์แนบกับด้านหลังเพื่ออ้างอิง:
โทรหาวิธีการถ่ายโอนเซิร์ฟเวอร์ยกเลิกการดำเนินการของหน้าแรกทันทีและเริ่มดำเนินการหน้าสอง
หากหน้าแรกเริ่มเขียนบัฟเฟอร์การตอบกลับหน้าสองจะถูกเพิ่มลงในบัฟเฟอร์แทนการแทนที่
หากบัฟเฟอร์เปิดอยู่วิธีนี้จะแก้ไขหัว HTTP เว้นแต่จะไม่มีเนื้อหาที่ถูกส่งไป
เมื่อส่งไปยังแอปพลิเคชันอื่น ๆ แอปพลิเคชันหน้าเริ่มต้นและวัตถุเซสชันจะรวมข้อมูลแอปพลิเคชัน
ตัวอย่างที่เป็นแบบอย่าง
หน้าตัวอย่างต่อไปนี้อธิบายวิธีการใช้วิธีเซิร์ฟเวอร์การถ่ายโอน
1.
<html>
<body>
<H3> ขั้นตอนที่ 1 -FORM PAGE </H3>
<table border = 1>
<tr>
<th> โพสต์ </th>
<td>
<form action = page2.asp method = post>
<ประเภทอินพุต = ชื่อข้อความ = ชื่อ/>
<ประเภทอินพุต = ส่งค่า = ส่ง/>
</form>
</td>
</tr> <te>
</tr>
<th> รับ </th>
<td>
<form action = page2.asp method = get>
<ประเภทอินพุต = ชื่อข้อความ = ชื่อ/>
<ประเภทอินพุต = ส่งค่า = ส่ง/>
</form>
</td>
</table>
</body>
</html>
2. ใส่รหัสต่อไปนี้เป็น page2.asp (โดยไม่มีใบเสนอราคา):
< % @Language = VBScript %>
<html>
<body>
<H3> ขั้นตอนที่ 2 -หน้าถ่ายโอน </h3>
-
เลือก Case Ucase
โพสต์เคส
Server.transfer page3a.asp
เคสได้รับ
Server.transfer page3b.asp
กรณีอื่น
Response.prite ใช้คำกริยา HTTP ที่ไม่รู้จัก
สิ้นสุดเลือก
-
</body>
</html>
3. ใส่รหัสต่อไปนี้เป็น page3a.asp (โดยไม่มีใบเสนอราคา):
< % @Language = VBScript %>
<H3> ขั้นตอนที่ 3A -POST ผลลัพธ์ </h3>
<p> สวัสดี < % = request.form (ชื่อ) %> </p>
4. ใส่รหัสต่อไปนี้เป็น page3b.asp (โดยไม่มีใบเสนอราคา):
< % @Language = VBScript %>
<H3> ขั้นตอนที่ 3B -รับผลลัพธ์ </h3>
<p> สวัสดี < % = request.QueryString (ชื่อ) %> </p>
หมายเหตุ: สองหน้าสุดท้ายคือหน้า HTML ที่ไม่สมบูรณ์ นี่เป็นเพราะทั้งสองหน้าจะถูกเพิ่มลงในบัฟเฟอร์หน้าสอง
เรียกดู page1.asp เพื่อทดสอบอินสแตนซ์นี้