ฉันจะทำให้ Apache แสดงหน้าคงที่เดียวได้อย่างไรไม่ว่า URL ที่ป้อนจะเป็นอย่างไร


9

ฉันทำโฆษณาการปิดกั้นเซิร์ฟเวอร์ DNS ที่เปลี่ยนเส้นทางโดเมนโฆษณาอินสแตนซ์ของอาปาเช่ ดังนั้นสิ่งที่ชอบ

www.addomain.com

ถูกเปลี่ยนเส้นทางไปที่

dnsserver.localnetwork

อย่างไรก็ตามบางครั้งฉันก็พบลิงค์เหมือนกัน

www.addomain.com/some_ad

ซึ่งได้รับการเปลี่ยนเส้นทางไปยัง

dnsserver.localnetwork/some_ad

ซึ่งไม่มีอยู่และด้วยเหตุนี้ทำให้เกิด404ข้อผิดพลาด

ฉันหวังว่าจะมีวิธีที่จะให้บริการ Apache index.htmlโดยไม่คำนึงถึงคำขอจริง มิฉะนั้นถ้าคุณมีโซลูชันทางเลือกที่ไม่เกี่ยวข้องกับ Apache ฉันก็พร้อมสำหรับมันเช่นกัน


1
คุณสามารถดู apaches mod_rewrite เปลี่ยนเส้นทางทุกอย่างจากหลังจากโดเมนไปยัง /index.html
rechengehirn

ดูเหมือนว่าวิธีการปิดกั้นโฆษณาจะไม่มีประสิทธิภาพ
Panther

@ bodhi.zazen คุณจะทำอย่างไร adblockers ส่วนใหญ่ทำงานในแนวคิดที่คล้ายกัน บล็อกหรือเปลี่ยนเส้นทางคำขอไปยังโดเมนการโฆษณา ฉันยินดีที่จะใช้ทางเลือกที่ดีกว่านี้หากคุณมี
sayantankhan

1
ตามจริงแล้วฉันใช้ noscript และปลั๊กอิน adblock เริ่มต้น หากนั่นไม่เพียงพอคุณสามารถใช้ไฟล์โฮสต์ (ใช้เวลาในการดูแล) หรือพรอกซี (privoxy) แต่จะใช้งานมากกว่านี้เพื่อรักษาบัญชีดำของคุณเอง ดูที่addons.mozilla.org/en-US/firefox/addon/noscriptและaddons.mozilla.org/en-US/firefox/addon/adblock-plusคุณอาจต้องใช้ตัวเลือกอื่นขึ้นอยู่กับเบราว์เซอร์ของคุณ
Panther

คำตอบ:


18

ใน Ubuntu ให้แน่ใจว่าmod_aliasมีการใช้งาน:

sudo a2enmod alias

จากนั้นในคำสั่ง VirtualHost AliasMatchคุณสามารถใช้

ตัวอย่าง:

<VirtualHost *:80>
    DocumentRoot /path/to/your/host
    ServerName yourdomain.com
    DirectoryIndex index.html

    AliasMatch ^/(.*)$ /path/to/your/host/index.html

    <Directory "/path/to/your/host">
      Require all granted
    </Directory>
</VirtualHost>

/index.htmlตอนนี้ทุกอย่างได้รับการเปลี่ยนเส้นทางไปยัง


JS, CSS และรูปภาพของฉันกำลังได้รับการเปลี่ยนเส้นทางเช่นกันด้วยโซลูชันนี้ จะมีวิธีการป้องกันปัญหานี้ได้โดยไม่ต้องทำ regex ใหญ่ใด ๆ ที่ตรวจสอบการขยายตัวของการร้องขอหรือไม่
Ameo

8

คุณต้องมีกฎการเขียนซ้ำในไฟล์. htaccess ของคุณ สิ่งต่อไปนี้ควรใช้งานได้:

RewriteRule ^*$  http://www.addomain.com/index.html [R=301,NC,L]

นั่นคือการเปลี่ยนเส้นทาง มันไม่ได้ให้บริการโดยตรง index.html
คำแสลง

1

อีกตัวเลือกที่ง่ายกว่าคือการเปลี่ยนหน้าข้อผิดพลาด 404 เป็นหน้าคงที่ที่คุณต้องการแสดงสำหรับทุกหน้าในเว็บไซต์ของคุณ ดังนั้นให้มองหาบรรทัดนี้ (หรือบางอย่างที่คล้ายกัน) ในไฟล์กำหนดค่า apache2 ของคุณ:

ErrorDocument 404 /errors/not_found.html

และเปลี่ยน "/errors/not_found.html" เป็น: "/index.html"

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