Score:1

ฉันจะจำกัดการเข้าถึง `/` และ `/index.php` บนเซิร์ฟเวอร์ของฉันโดยไม่อนุญาตอย่างอื่นได้อย่างไร

ธง jp

ฉันต้องการอนุญาตให้ผู้ใช้สามารถเข้าชมได้เท่านั้น index.php (และก็เพียง /) บนเซิร์ฟเวอร์ของฉัน และไม่มีอะไรอื่น (ส่งคืน 403 หากถูกต้อง และ 404 หากไฟล์ไม่ถูกต้อง)

ฉันจะทำสิ่งนี้ได้อย่างไร ฉันได้ลองวิธีแก้ไขปัญหาต่อไปนี้แล้ว ปฏิเสธการเข้าถึงไฟล์ทั้งหมด ยกเว้น index.html apache

ปฏิเสธการเข้าถึงไฟล์ทั้งหมดยกเว้น index.php แต่อนุญาตให้เข้าถึงผ่าน "/" ในไฟล์ htaccess

แต่ดูเหมือนจะไม่มีผลใดๆ

ไฟล์ .htaccess ของฉันคือไฟล์นี้ แต่ไม่มีผลใด ๆ และฉันยังคงสามารถเข้าถึงไฟล์อื่น ๆ บนเซิร์ฟเวอร์ของฉันได้:

คำสั่งอนุญาตปฏิเสธ
ปฏิเสธจากทั้งหมด
<ดัชนีการจับคู่ไฟล์\.php>
        อนุญาตจากทั้งหมด
</FilesMatch>

ฉันไม่แน่ใจว่าฉันต้องกำหนดอะไรในการกำหนดค่า virtualhosts ด้วยหรือไม่

ไฟล์ virtualhosts ของฉันคือ:

ServerAdmin webmaster@localhost
ชื่อเซิร์ฟเวอร์ server.mydomain.com
ServerAlias ​​server.mydomain.com
DocumentRoot /var/www/server.mydomain.com
DirectoryIndex index.php
บันทึกข้อผิดพลาด ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log รวมกัน

SSLCertificateFile /etc/letsencrypt/live/server.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/server.mydomain.com/privkey.pem
รวม /etc/letsencrypt/options-ssl-apache.conf

apache2ctl -S เอาต์พุตคือ:

การกำหนดค่า VirtualHost:
*:443 server.mydomain.com (/etc/apache2/sites-enabled/server.mydomain.com-le-ssl.conf:2)
*:80 server.mydomain.com (/etc/apache2/sites-enabled/server.mydomain.com.conf:1)
รูทเซิร์ฟเวอร์: "/etc/apache2"
รูทเอกสารหลัก: "/var/www/html"
ErrorLog หลัก: "/var/log/apache2/error.log"
Mutex การเย็บ ssl: using_defaults
Mutex ssl-cache: using_defaults
ค่าเริ่มต้นของ Mutex: dir="/var/run/apache2/" กลไก=ค่าเริ่มต้น
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
Mutex ssl-เย็บเล่ม-รีเฟรช: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
กำหนด: DUMP_VHOSTS
กำหนด: DUMP_RUN_CFG
ผู้ใช้: name="www-data" id=33
กลุ่ม: name="www-data" id=33
Score:1
ธง us
Rob

IMHO คุณกำลังทำสิ่งต่าง ๆ ในทางที่ผิดและกำลังพยายามแก้ปัญหาที่สามารถหลีกเลี่ยงได้โดยสิ้นเชิง:

อย่าเก็บไฟล์และไดเร็กทอรีที่ไม่ได้ออนไลน์ไว้ใน DocumentRoot ของคุณ

จำกัด เนื้อหาของไดเร็กทอรี /var/www/server.example.com ถึงเพียงนั้น index.php ไฟล์และคุณไม่สามารถผิดพลาดได้


คำถามนี้ติดแท็กด้วยประวัติศาสตร์ เวอร์ชันและไวยากรณ์ที่ไม่เหมาะกับ Apache httpd 2.4 รีลีสปัจจุบัน - ดู https://httpd.apache.org/docs/2.4/upgrading.html


เมื่อคุณต้องการเผยแพร่บางสิ่งภายใต้ http://www.example.com/some-path/ ใช้ นามแฝง คำสั่งเพื่อแสดงไดเร็กทอรีอื่นพร้อมกันแทนที่จะสร้างไดเร็กทอรีย่อย /var/www/server.example.com/some-path/ (เช่น สร้าง /var/www//some-path) และใช้:

<VirtualHost *:80
    ServerAdmin webmaster@localhost
    ServerName server.mydomain.com
    ServerAlias server.mydomain.com
    DocumentRoot /var/www/server.example.com

    Alias /some-path "/var/www/some-path"

    <Directory "/var/www/some-path"> 
       # add settings here, for example
       Order deny,allow
       Deny from all
       Allow From 127.0.0.1
    </Directory>
</VirtualHost>

โพสต์คำตอบ

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