โฮสต์โดเมนหลักจากโฟลเดอร์ย่อย [ปิด]


3

ฉันมีปัญหาในการทำให้ไดเรกทอรีย่อยทำหน้าที่เป็น public_html สำหรับโดเมนหลักของฉันและรับวิธีแก้ปัญหาที่ทำงานกับไดเรกทอรีย่อยของโดเมนนั้นด้วย

การโฮสต์ของฉันทำให้ฉันสามารถโฮสต์ไซต์ได้หลายไซต์ซึ่งทั้งหมดนั้นใช้งานได้ดี ฉันได้ตั้งค่าโฟลเดอร์ย่อยภายใต้ไดเรกทอรี~ / public_html /ชื่อ/ domains / ของฉันที่ฉันสร้างโฟลเดอร์สำหรับแต่ละเว็บไซต์แยกกัน เช่น

  • public_html
    • โดเมน
      • websiteone
      • websitetwo
      • websitethree
      • ...

สิ่งนี้ทำให้เว็บไซต์ของฉันเป็นระเบียบเรียบร้อย ปัญหาเดียวก็คือการได้รับ "โดเมนหลัก" ของฉันเพื่อให้พอดีกับระบบนี้ ดูเหมือนว่าโดเมนหลักของฉันจะผูกติดอยู่กับบัญชีของฉัน (หรือ Apache หรืออะไรบางอย่าง) ดังนั้นฉันจึงไม่สามารถเปลี่ยน "รากเอกสาร" ของโดเมนนี้ได้ ฉันสามารถกำหนดรากของเอกสารสำหรับโดเมนอื่น ๆ ("Addon Domains") ที่ฉันเพิ่มใน cPanel ได้โดยไม่มีปัญหา แต่โดเมนหลักนั้นแตกต่างกัน

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

ปัญหาที่ฉันมีคือถ้าฉันพยายามนำทางเบราว์เซอร์ของฉันเพื่อพูดโฟลเดอร์รูปภาพ (เพียงแค่ตัวอย่าง) ของเว็บไซต์หลักของฉันเช่นนี้:

www.yourmaindomain.com/images/

ดูเหมือนว่าจะไม่สนใจการเปลี่ยนเส้นทางและแสดงไดเรกทอรีเซิร์ฟเวอร์ทั้งหมดใน URL เช่นนี้

www.yourmaindomain.com/domains/yourmaindomain/images/

มันยังคงแสดงหน้า "ดัชนีของ / ภาพ" ที่ถูกต้องและแสดงรายการรูปภาพทั้งหมดของฉัน

นี่คือตัวอย่างของไฟล์. htaccess ของฉันที่ฉันใช้:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteCond %{REQUEST_URI} !^/domains/yourmaindomain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domains/yourmaindomain/$1

RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteRule ^(/)?$ domains/yourmaindomain/index.html [L]

ไฟล์ htaccess นี้ดูถูกต้องหรือไม่ ฉันแค่ต้องสร้างมันขึ้นมาเพื่อให้โดเมนหลักของฉันทำงานเหมือนโดเมน addon และเป็นไดเรกทอรีย่อยที่เป็นไปตามกฎการเปลี่ยนเส้นทาง


สำหรับบันทึก: จนถึงตอนนี้มันทำงานได้อย่างสมบูรณ์แบบสำหรับการติดตั้ง WordPress Multisite
brasofilo

คำตอบ:


1

ฉันต้องการโทรโกงDirectorySlashกับมัน

  1. มันเกิดขึ้นกับไดเรกทอรีเท่านั้นหรือ
  2. มันจะเกิดขึ้นเมื่อไม่มีการต่อท้ายสแลช (เช่น/imagesไป/domain/yourdomain/images/แต่/images/ไม่เป็นไร)?

ในกรณีนั้นมี 3 ตัวเลือก:

  1. ตรวจสอบให้แน่ใจว่าลิงก์ทั้งหมดมีเครื่องหมายสแลช ( /)
  2. ตั้งค่าDirectorySlash off(จะนำคุณเข้าสู่หน้าเว็บคู่ / dir จากจุดยืน SEO ไม่ใช่คนดี)
  3. ลองเพิ่มอันRewriteRuleก่อนอันสุดท้ายของคุณindex.html: (ลองคิดดูสิว่าจะใช้ได้ไหม)

    RewriteCond %{REQUEST_FILENAME} -d  
    RewriteCond %{REQUEST_FILENAME} !/$  
    RewriteRule ^(.*) $1/  
    

ฉันมีปัญหาเดียวกันและเป็นคำตอบของคุณแนะนำก็ดูเหมือนจะเกิดจาก (ต่อท้าย) ทับเฉือน ฉันสนใจโซลูชันที่สามของคุณ (หรือที่รู้จักในการแก้ปัญหาด้วย RewriteRules เพิ่มเติม) - แม้ว่ากฎที่ระบุไว้จะไม่ทำงาน ฉันพยายามเล่นด้วยบ้าง แต่ก็ไม่สามารถทำอะไรได้เลย ข้อเสนอแนะอื่น ๆ ที่เป็นไปได้ที่อาจลอง? ฉันได้ลองใช้งานเอกสาร mod_rewrite แล้ว แต่มันก็ค่อนข้างใหม่ / ไม่คุ้นเคยสำหรับฉัน ...
Metal450

0

หนึ่งในปัญหาของคุณคือ Regex ของคุณ: คุณไม่ได้หนีจุดของคุณ นั่นหมายความว่ามันจะถูกใช้เป็น "ตัวละครใด ๆ " แทนที่จะเป็นแค่จุด แทน

^(www.)?domain.tld$

คุณจะต้องมี

^(www\.)?domain\.tld$
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.