ブラウザーでURLの指定時に index.html 等、ファイル名を指定せずに
ディレクトリー(exp. http://www.hogemoge.com/)のみを指定した場合、
そのディレクトリーに index.html等デフォルトのhtmlファイルが存在
しないと、そのディレクトリーのファイルリストが表示される。
これを表示しない様にするには "autoindex_module" の使用をやめる。
httpd.conf LoadModule autoindex_module libexec/mod_autoindex.so AddModule mod_autoindex.c |
: www IN A 192.168.33.20 web IN A 192.168.33.30 : |
: www IN A 192.168.33.20 web IN CNAME www : |
www.hogoboge.com <-- 192.168.33.10 www.hogoboge.net <-- 192.168.33.15 www.hogoboge.com <-- 192.168.33.25 : 以下略 |
<VirtualHost *> ServerAdmin webmaster@dummy-host.example.com DocumentRoot /www/docs/dummy-host.example.com ServerName dummy-host.example.com ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> |
VirtualHost | IPアドレスを書きます |
ServerAdmin | サーバーの管理者のメールアドレス |
DocumentRoot | コンテンツのrootディレクトリ |
ServerName | サーバーの名前 |
ErrorLog | エラーログのファイル名 |
CustomLog | アクセスログのファイル名 |
<VirtualHost 192.168.33.20> ServerAdmin webmaster@www.hogoboge.com DocumentRoot /usr/local/apache/htdocs.www ServerName www.hogoboge.com ErrorLog logs/www.error_log CustomLog logs/www.access_log common </VirtualHost> <VirtualHost 192.168.33.30> ServerAdmin webmaster@web.hogoboge.com DocumentRoot /usr/local/apache/htdocs.web ServerName web.hogoboge.com ErrorLog logs/web.error_log CustomLog logs/web.access_log common </VirtualHost> |
NameVirtualHost 192.168.33.20 <--重要 |
<VirtualHost 192.168.33.20> ServerAdmin webmaster@www.hogoboge.com DocumentRoot /usr/local/apache/htdocs.www ServerName www.hogoboge.com ErrorLog logs/www.error_log CustomLog logs/www.access_log common </VirtualHost> <VirtualHost 192.168.33.20> ServerAdmin webmaster@web.hogoboge.com DocumentRoot /usr/local/apache/htdocs.web ServerName web.hogoboge.com ErrorLog logs/web.error_log CustomLog logs/web.access_log common </VirtualHost> |
Webをいろいろ巡っているとたまに "404 Not Found"といわれるページに遭遇する事があります。 |
Not Found
The requested URL /aa was not found on this server.
Apache/1.3.26 Server at www.hogoboge.net Port 80
このページは読んで字のごとく"ページがみつかんない"ってことです。 |
普通は存在しないページにアクセスすると上記の様なページ(サーバーがApacheの場合)が表示されます。 |
このページはApacheのデフォルトなのですが別途、"404 Not Found"用のページを準備しておけばそのページを表示させる事が出来ます。 |
1.まず、"404 Not Found"用のページを準備します。 ここで気をつけなくてはいけないのは画像ファイルを使う場合です。 | |
画像ファイルを使う場合はドキュメントのrootに対しフルパスで場所を指定しなければなりません。 | |
2.次に "httpd.conf"を編集します。 次の行を編集します。
| |
3.Apacheを再起動して終わりです。 |
Apacheの機能にURLのリダイレクト機能があります(これが正しい呼び名かどうかは分かりませんけど...) | |
これは、あるURLに対するアクセスを別のURLに振り分ける機能です。 例えば "http://www.hogehoge.jp/hoge/"へのアクセスはすべて "http://www.hogohoge_new.com/"に誘導したい場合に使います | |
機能的にはHTMLにおける
| |
何故、HTMLで出来ることをわざわざApacheの設定でしなければいけないのか? | |
それはHTMLではカバー出来ない事や、よりスマートな方法だからです。(きっと) | |
例えば、HTMLでページをジャンプさせる方法は携帯電話などでは使えなかったりします。 |
この機能を使うには三つの方法があります。 |
1."mod_alias"を利用する。 2."mod_rewrite"を利用する。 3."cgi"を利用する。 |
1."mod_alias"を利用する。 | |
以下の設定を "http.conf" に追加します 書く場所はモジュールの読み込み記述より後に書かなければダメです。 | |
|
2."mod_rewrite"を利用する。 | |
以下の設定を "http.conf" に追加します 書く場所はモジュールの読み込み記述より後に書かなければダメです。 | |
|
3."cgi"を利用する。 | |
以下の設定を "http.conf" に追加し、cgiスクリプトを cgiディレクトリーに置きます。 | |
| |
redirect_script
|
複数のドメインがありそれぞれのドメインでアクセスされたときに特定のドメインに接続させたい。 | ||
新しいドメインを取ったけど、まだ古いドメインでアクセスする人もいる。こんな時にいいかも。 | ||
例えば "http://www.old_url.jp/"へのアクセスはすべて "http://www.new_url.com/"に誘導したい場合など | ||
URLのリダイレクトその1の様に html,cgi といったやり方もありますが、その場合、全てのページにリダイレクトの設定をしなければいけません。 | ||
とてもじゃないけどやってられません。 | ||
そこで Apache の VirtualHost機能と RedirectMatch機能を利用します。 | ||
ただし、自分でサーバーを運用していなければこれは出来ません。 | ||
レンタルの場合は....地道に.... | ||
まずは VirtualHost の設定 | ||
| ||
これに RedirectMatch を追加 | ||
| ||
| ||
RedirectMatch は正規表現を使い、アクセスされた URLパスに従い、URLのリダイレクトを行います | ||
|
通常、"cgi-bin"ディレクトリー は実行可能なファイルにに対してのアクセスのみが許可されます。 その為、 cgiファイルで画像を "img"タグで表示させる場合 "cgi-bin"ディレクトリーの外に対象の画像ファイル置く必要があります。 しか〜し、どうしても cgiファイルと画像ファイルを同じディレクトリーに置きたい場合がある。 っていゆうか、置かせろ。 こんな時、"httpd.conf" の"cgi-bin"の<Directory>ディレクティブに以下の設定を追加する。 |
. | ||
. |
<Directory "/usr/local/apache1/cgi-bin"> : : AddHandler image/gif .gif ←追加 AddHandler image/jepg .jpg ←追加 AddHandler image/png .png ←追加 </Directory> |
. |
. |
#Listen 12.34.56.78:80 ↓ Listen 192.168.0.123:80 |