Score:0

Apache VirtualDocumentRoot ได้หลายไดเร็กทอรีย่อย

ธง za

ฉันมีเซิร์ฟเวอร์ Apache ในพื้นที่สำหรับพัฒนาเพจ ดังนั้น ฉันมีโฟลเดอร์รูทที่หน้าต่างๆ ทั้งหมดอยู่ในโฟลเดอร์ย่อย โฟลเดอร์เหล่านั้นมีโฟลเดอร์ย่อยอื่นสำหรับเนื้อหาสาธารณะ ซึ่งอาจขึ้นอยู่กับเฟรมเวิร์ก - โฟลเดอร์อื่น (เช่น สาธารณะ, wwwroot, webroot, httpdocs)

โครงสร้างโฟลเดอร์:
/
|--srv
    |--http
        |--หน้า
        | |--เว็บรูท
        | |-- .htaccess
        | |--index.php
        |--หน้า2
            |--สาธารณะ
                |--index.php

ตอนนี้แทนที่จะใช้ http://localhost/page/webroot ฉันต้องการใช้ http://page.localhost/ รูปแบบ URL เนื่องจากควรจะเหมือนในโลกแห่งความเป็นจริง (เช่น ลิงก์ที่ชี้ไปที่รูทควรใช้งานได้ เป็นต้น)

ก่อนอื่นฉันลองด้วย VirtualDocumentRoot /srv/http/%-2/webroot/ ซึ่งดูเหมือนว่าจะทำงานได้ดีถ้าทุกหน้ามีโฟลเดอร์ webroot เป็นโฟลเดอร์สาธารณะ อย่างไรก็ตาม จะไม่ทำงานหากโฟลเดอร์สาธารณะมีชื่ออื่น

วิธีที่สองของฉันคือใช้ mod_rewrite ด้วยสิ่งที่ชอบ:

DocumentRoot /srv/http
RewriteEngine เปิดอยู่

RewriteCond %{HTTP_HOST} (.+)\.[^\.]+$
RewriteCond %{DOCUMENT_ROOT}/%1/webroot -d
RewriteRule ^(.+) %{DOCUMENT_ROOT}/%1/webroot/$1 [L]

(สามารถทำซ้ำ 3 บรรทัดสุดท้ายสำหรับโฟลเดอร์อื่น - ข้ามที่นี่เพื่อความสะดวกในการอ่าน)

มันดูค่อนข้างมีแนวโน้มในตอนเริ่มต้น แต่จากนั้นฉันก็พบว่ามันไม่ทำงานหากหน้านั้นมีไฟล์ .htaccess ที่มี mod_rewrite ในเครื่องซึ่งแมปคำขอทั้งหมดกับ index.php (เช่น บางเฟรมเวิร์กทำ) ในกรณีนี้ mod_rewrite จะทำงานวนซ้ำไม่สิ้นสุด เนื่องจากส่วนไดนามิกของพาธได้รับการปฏิบัติเหมือนกับโฟลเดอร์ย่อย และไม่เหมือนกับ DocumentRoot นี่คือผลลัพธ์จากบันทึก: https://pastebin.com/4aNgRahx

สิ่งนี้จะทำซ้ำจนกว่าจะถึงขีดจำกัดการเรียกซ้ำ

ไฟล์ .htaccess มีลักษณะดังนี้:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^ index.php [L]
</IfModule>

ถ้าฉันปิดมันจะทำงาน

แล้วตอนนี้ฉันควรทำอย่างไร?

การเปลี่ยน .htaccess หรือไฟล์ใดๆ ในโฟลเดอร์โปรเจ็กต์นั้นไม่ใช่ตัวเลือก เพราะมันจะไม่สามารถใช้งานได้อีกต่อไปในเซิร์ฟเวอร์จริง

โพสต์คำตอบ

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