วิธีเพิ่มลิงค์ที่เกี่ยวข้อง (ของชื่อไฟล์บนเครื่องระยะไกลในเครือข่าย) ในหน้า PHP [ซ้ำกัน]

มีสามเครื่อง - 1. เซิร์ฟเวอร์ - ที่แอปพลิเคชันถูกปรับใช้ เรียกมันว่าเครื่อง1. 2. เครื่องที่สองที่เก็บไฟล์บางไฟล์ไว้ เรียกมันว่าเครื่องเอบีซี 3. เครื่องที่ฉันเข้าถึงแอปพลิเคชันที่ใช้งานบนเครื่อง 1

สมมติว่า http://testapplication.com:8080/pagedirectory/viewCart.php

ใน viewCart.php มีลิงค์แสดงเป็น \\ABC\Folder1\file.xml หากฉันเข้าถึงเส้นทางนี้โดยตรงโดยการพิมพ์หรือคัดลอกไปยังเบราว์เซอร์ มันจะใช้งานได้และฉันจะสามารถดูไฟล์ได้ แต่หากฉันคลิกไปที่หน้าเว็บ มันเปิดไม่ได้และแจ้งข้อผิดพลาด - The requested URL /pagedirectory/\\ABC\Folder1\file.xml was not found on this server.

ถ้าฉันนำเมาส์ไปวางเหนือลิงก์นี้ ฉันจะเห็นในแถบสถานะที่ด้านล่างของเบราว์เซอร์

http://testapplication.com:8080/pagedirectory/\\ABC\Folder1\file.xml

ดูเหมือนว่าจะเพิ่มไดเร็กทอรีฐานจากตำแหน่งที่เรียกใช้เพจไปยังลิงก์ทั้งหมดและทำให้เกิดข้อผิดพลาด

บันทึกแจ้งว่า Found %2f (encoded '/') in URI (decoded = '/somepath')...returning 404 referer ในบันทึก apache เมื่อฉันพยายามคลิกลิงก์ด้านบนที่แสดงบนหน้าจากเครื่องของฉัน ถ้าฉันเข้าถึงแอปพลิเคชันบนเครื่องที่โฮสต์ไว้ มันก็ทำงานได้สมบูรณ์แบบโดยไม่มีปัญหา แล้วฉันทำอะไรผิดล่ะ? ฉันเห็นในบางโพสต์ว่าจะใช้ AllowEncodedSlashes On แต่ไม่แน่ใจว่าจะวางไว้ที่ไหน และฉันไม่ได้ใช้โฮสต์เสมือนใดๆ

กรุณาช่วย !!.


person anujin    schedule 25.09.2012    source แหล่งที่มา


คำตอบ (1)


แนวคิดบางประการ:

  1. คุณต้องให้ "\" เหล่านั้นหันไปทางอื่นสำหรับ URL ของคุณ
  2. หากเป็นการเพิ่มไดเร็กทอรีฐาน คุณอาจมี URL ที่เกี่ยวข้อง -- หาก href="/thsomething" ของคุณไปที่ /base/directory/something แต่ถ้าคุณใช้ url ที่แน่นอน href="/th/something" มันจะไปที่ /something
  3. หากไม่ใช่ URL ที่เกี่ยวข้อง ให้ตรวจสอบ apache conf ของคุณและให้แน่ใจว่าคุณไม่มีกฎการเขียนซ้ำที่ขี้ขลาดเกิดขึ้น
person Mike Graf    schedule 25.09.2012
comment
ขอบคุณไมค์สำหรับข้อเสนอแนะ แต่หากเป็นเช่นนั้น ฉันไม่ควรเข้าถึง URLS ด้วยการเข้าถึงแอปพลิเคชันจากเครื่องที่ติดตั้งใช้งาน ดังนั้นถ้าฉันลองจากเครื่อง 1 มันก็ใช้ได้ แต่จากเครื่องอื่นมันไม่ทำงาน - person anujin; 25.09.2012