Làm cách nào để làm cho Apache phục vụ một trang tĩnh bất kể URL đã nhập là gì?


9

Tôi đang tạo một máy chủ DNS chặn quảng cáo để chuyển hướng tất cả các miền quảng cáo sang một phiên bản của Apache . Vì vậy, một cái gì đó như

www.addomain.com

được chuyển hướng đến

dnsserver.localnetwork

Tuy nhiên, thỉnh thoảng tôi bắt gặp các liên kết giống như

www.addomain.com/some_ad

được chuyển hướng đến

dnsserver.localnetwork/some_ad

mà thậm chí không tồn tại và do đó gây ra 404lỗi.

Tôi đã hy vọng rằng sẽ có một số cách để làm cho Apache phục vụ index.html, bất kể yêu cầu thực tế là gì. Mặt khác, nếu bạn có một giải pháp thay thế không liên quan đến Apache, tôi cũng đồng ý với điều đó.


1
Bạn có thể có một cái nhìn về apaches mod_rewrite. Chuyển hướng mọi thứ từ sau tên miền sang /index.html
rechengehirn

Đây có vẻ là một cách không hiệu quả để làm quảng cáo.
Panther

@ bodhi.zazen Bạn sẽ làm thế nào? Hầu hết các trình chặn quảng cáo làm việc trên một khái niệm tương tự. Chặn hoặc chuyển hướng các yêu cầu đến các lĩnh vực quảng cáo. Tôi sẽ rất vui khi thực hiện một giải pháp thay thế tốt hơn nếu bạn có.
sayantankhan

1
Thành thật mà nói, tôi sử dụng noscript và các plugin quảng cáo mặc định. Nếu điều đó là không đủ, thì bạn có thể sử dụng tệp máy chủ (mất công để duy trì) hoặc proxy (privateoxy), nhưng một lần nữa, bạn phải mất nhiều công sức hơn để tự duy trì danh sách đen. Xem addons.mozilla.org/en-US/firefox/addon/noscriptaddons.mozilla.org/en-US/firefox/addon/adblock-plus , bạn có thể cần thay thế tùy thuộc vào trình duyệt của bạn.
Panther

Câu trả lời:


18

Trong Ubuntu, đảm bảo mod_aliasđược bật:

sudo a2enmod alias

Sau đó, trong chỉ thị Virtualhost của bạn, bạn có thể sử dụng AliasMatch.

Thí dụ:

<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>

Bây giờ mọi thứ được chuyển hướng đến /index.html.


JS, CSS và hình ảnh của tôi cũng đang được chuyển hướng cùng với giải pháp này. Có cách nào để ngăn chặn điều này mà không cần thực hiện một regex lớn kiểm tra phần mở rộng của yêu cầu không?
Ameo

8

Bạn cần một quy tắc viết lại trong tệp .htaccess của bạn. Một cái gì đó như sau nên hoạt động:

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

Đó là một chuyển hướng. Nó không trực tiếp phục vụ index.html.
tiếng lóng

1

Một tùy chọn đơn giản khác sẽ là thay đổi trang lỗi 404 thành trang tĩnh mà bạn muốn hiển thị cho tất cả các trang trên trang web của mình. Vì vậy, hãy tìm dòng này (hoặc một cái gì đó tương tự) trong các tệp cấu hình apache2 của bạn:

ErrorDocument 404 /errors/not_found.html

Và thay đổi "/errors/not_found.html" thành: "/index.html"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.