web-dev-qa-db-ja.com

ローカルホストにリダイレクトする代わりに、/ etc / hostsを介してブロックされたサイトの適切な404ページを生成します

/ etc/hostsを編集し、次の方法でいくつかの改行エントリを追加することにより、いくつかのWebサイトをブロックしました。

0.0.0.0 www.domain.com

そしてそれは機能します。唯一のことは、ブロックされているWebサイトにアクセスすると、ブラウザーがhttp://localhostにリダイレクトされ、ローカルホストのルート環境内で実行されているディレクトリリストまたはWebサイトプレゼンテーションが生成されることです。

これはそれほど大きな問題ではありませんが、Webサイトにアクセスできない(たとえば404ページで)という標準エラーが望ましいです。これは可能ですか?

2
grrrbytes

ローカルWebサーバーを実行していると思いますか?あなたのように見えるので、私はそれを仮定します。また、他のWebサーバーにも同じ機能があると思われますが、Apacheを使用していることを願っていますが、他のサーバーの経験はありません。

多数のサイトをブロックしている場合、これは非常に問題になる可能性がありますが、404ページの開始ページを使用して仮想ドメインを作成することもできます。 PHPを知っている場合は、より有益なメッセージのためにブロックされているサイトの名前でPHPをカスタマイズできます。

ホストファイルは同じままで、/etc/Apache2/sites-enabledにあるApacheの構成ファイルに追加されます。最初は、/var/wwwとして定義されているドキュメントルートのみがあります。これを変更できるだけでなく、名前とエイリアスが関連付けられたディレクトリをいくつでも追加できます。

私の考えは、404ページを含む新しいディレクトリに1つ追加することです。ディレクトリと「サイト名」を決定し、ファイルに新しいエントリを追加します。例えば:

<VirtualHost *:80>
    <Directory /var/www/my404>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    DocumentRoot /var/www/my404/
    ServerName my404.loc
    ServerAlias www.domain.com
</VirtualHost>

localhost my404.locを使用してhostsファイルにエントリを追加すると、http://my404.locを入力して、テストのためにローカルでページにアクセスできるようになります。うまくいけば、hostsファイルにそのエントリがある場合は、www.domain.comからもアクセスできます。ホストファイルにさらに「ServerAlias」エントリを追加し続けることができるはずです。

これがあなたにとって明白であり、おそらく役立つことを願っています。役に立ったと思うが、はっきりしない場合は、遠慮なく質問してください。

私は実際にこのすべてを試したことがないので、保証はありません。 :)

3
Marty Fried