입력 한 URL이 무엇이든 Apache가 단일 정적 페이지를 제공하도록하려면 어떻게해야합니까?


9

모든 광고 도메인을 Apache 인스턴스로 리디렉션하는 광고 차단 DNS 서버를 만들고 있습니다. 그래서 같은

www.addomain.com

로 리디렉션됩니다

dnsserver.localnetwork

그러나 때로는 더 비슷한 링크를 보게됩니다.

www.addomain.com/some_ad

로 리디렉션되는

dnsserver.localnetwork/some_ad

존재하지 않으므로 404오류가 발생합니다.

index.html실제 요청에 관계없이 Apache가 서비스를 제공 할 수있는 방법이 있기를 바랐습니다 . 그렇지 않으면 Apache가 포함되지 않은 대체 솔루션이 있다면 나도 그럴 것입니다.


1
아파치 mod_rewrite를 살펴볼 수 있습니다. 도메인 이후부터 /index.html로 모든 것을 리디렉션
rechengehirn

이것은 광고 차단을하는 비효율적 인 방법 인 것 같습니다.
Panther

@ bodhi.zazen 어떻게 하시겠습니까? 대부분의 애드 블로커는 비슷한 개념으로 작동합니다. 요청을 광고 도메인으로 차단하거나 리디렉션합니다. 더 나은 대안이 있다면 기꺼이 도와 드리겠습니다.
sayantankhan

1
솔직히 noscript와 기본 adblock 플러그인을 사용합니다. 충분하지 않은 경우 호스트 파일 (유지 관리 작업) 또는 프록시 (privoxy)를 사용할 수 있지만 블랙리스트를 직접 유지하려면 더 많은 작업이 필요합니다. addons.mozilla.org/en-US/firefox/addon/noscriptaddons.mozilla.org/en-US/firefox/addon/adblock-plus를 참조하십시오 . 브라우저에 따라 대체 항목이 필요할 수 있습니다.
Panther

답변:


18

우분투에서 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 및 이미지가 리디렉션됩니다. 요청의 확장을 확인하는 큰 정규식을 수행하지 않고이를 막을 수있는 방법이 있습니까?
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.