バーチャルホスト

.htaccessを有効にする

.htaccessを利用することで、Webサイトへのアクセス制限やbasic認証を行うことができます。
Webサーバーの構築では、.htaccessを有効にする設定にしていないので、このページで説明します。

①/var/www/htmlディレクトリ配下にある.htaccessを有効にする

SSHでVPSサーバーにアクセスし、root権限でhttpd.confを編集します。

[root@ ~]# vi /etc/httpd/conf/httpd.conf (httpd設定ファイルの編集)

.htaccessを有効にするには、AllowOverride None の記述部分を AllowOverride All に変更します。

<Directory "/var/www/html">

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
    Options FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride All (NoneをAllに変更)

#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all

</Directory>

変更が完了したら、ファイルを保存してください。
設定を有効にするため、Apacheを再起動。

[root@ ~]# service httpd restart (Apacheの再起動)

以上の設定で、/var/www/htmlディレクトリ配下にある.htaccessは有効になります。

②その他のディレクトリ配下にある.htaccessを有効にする

上記の設定では、/var/www/htmlディレクトリ配下にある.htaccessを有効にしましたが、/var/www/htmlディレクトリ以外でウェブコンテンツを設定している場合には、そのディレクトリで.htaccessが有効になるよう設定をします。
例として、/var/www/example.netディレクトリ配下の.htaccessを有効にします。

SSHでVPSサーバーにアクセスし、root権限でhttpd.confを編集します。

[root@ ~]# vi /etc/httpd/conf/httpd.conf (httpd設定ファイルの編集)

httpd.confのファイル末尾に下記3行を追加します。
“ “内のディレクトリ指定部分は適時変更してください。

<Directory "/var/www/example.net">
AllowOverride All
Order allow,deny
Allow from all
</Directory>

追加したら、ファイルを保存。
設定を有効にするため、Apacheを再起動。

[root@ ~]# service httpd restart (Apacheの再起動)

以上で設定したディレクトリ配下にある.htaccessが有効になります。

③.htaccessの利用について

.htaccessの設定内容によっては、ウェブサイトに支障をきたす可能性がありますので、.htaccessの設定は注意して行ってください。

知らないドメインのDNSをアクセス制御する

先日、自分が管理しているホームページをGoogle検索してみると不思議なことが起きていた。

自分のホームページと同じ内容(完全同一)のホームページがあるっ!!
画像やHTMLの内容も同じ、しかもPHPで作ったお問い合わせフォームのメール送信先ですら同じ。
ソースの中身も見てみると、ディレクトリ構造も同じ・・・。しかし、ドメイン名だけが違う。

ドメインを調査してみると、海外の管理会社と所有者。英語でメール連絡してみるも応答なし・・・。
こうなれば、Googleにコピーサイトを通報だ!意外と面倒くさい!

そもそも何でこんなことが起きたのだろうか。調べてみるしかない!

・・・はい、実に単純なものでした。
①相手がネームサーバーの設定先を間違えている、または設定をデフォルトから変更していないこと。
②当方のhttp.conf内の設定で、設定したドメイン以外のDNSも受け入れてしまう設定になっていた。

①をこちらで改善することはできないので、②を改善します。

SSHでVPSサーバーにアクセスし、root権限でhttpd.confを編集します。

[root@ ~]# vi /etc/httpd/conf/httpd.conf (httpd設定ファイルの編集)

httpd.conf内のバーチャルホスト記述箇所に下記設定を追記して、保存。

<VirtualHost *:80>
     ServerName any
     <Location />
        Order deny,allow
        Deny from all
     </Location>
</VirtualHost>

設定を有効にするため、httpd.confの再読み込み。

[root@ ~]# service httpd reload (httpd設定ファイルの読み込み)

これで解決!知らないドメインのホームページを見たら、見事に403エラー。

バーチャルホストの設定をしている場合には、この設定をしておかないと、知らないドメインのネームサーバーに間違って(または故意に)指定された場合、このような問題が起こってしまうようだ。
最悪の場合、Googleのペナルティを受けてしまうような事態も考えられるので、注意しましょう。