ウェブサイトは私たちの生活の重要な部分です。ビジネスを拡大し、知識を共有する手段として役立ちます。以前は静的コンテンツの提供に限定されていましたが、動的なクライアントとサーバーサイドのスクリプト言語の導入や、既存の静的言語であるhtmlからhtml5への進化により、ウェブサイトに動的な要素を追加することが可能になり、残されたのは近い将来に期待されるものです。
ウェブサイトと共に、世界中の多くの観客にこれらのウェブサイトを表示するためのユニットが必要となります。このニーズは、ウェブサイトをホストする手段を提供するサーバーによって満たされます。これには、次のようなサーバーのリストが含まれます:Apache HTTP Server、Joomla、およびWordPressなど、ウェブサイトをホストするための手段を提供します。

ウェブサイトをホストしたい人は、自分自身のローカルサーバーを作成するか、上記のいずれかのサーバー管理者に連絡してウェブサイトをホストすることができます。しかし、実際の問題はここから始まります。ウェブサイトのパフォーマンスは主に以下の要因に依存します:
- ウェブサイトが消費する帯域幅。
- ウェブサイトがハッカーからどれだけ安全か。
- データベースを通じたデータ検索に対する楽観主義
- ナビゲーションメニューの表示やUI機能の提供におけるユーザーフレンドリーさ。
これに加えて、ウェブサイトをホストするサーバーの成功を規定するさまざまな要因があります:
- 特定のウェブサイトのデータ圧縮の達成量。
- 同時に同じまたは異なるウェブサイトを要求する複数のクライアントにサービスを提供する能力。
- ウェブサイトに入力された機密データ(電子メール、クレジットカードの詳細など)を保護します。
- ウェブサイトの動的性を向上させるためのオプションをますます増やします。
この記事では、ウェブサイトのパフォーマンスを向上させ、悪意のあるボットやホットリンクなどから保護するサーバーが提供する機能の1つ、「.htaccess」ファイルについて説明します。
.htaccessとは何ですか?
htaccess(またはhypertext access)は、ウェブサイトの所有者がサーバー環境変数やその他のパラメーターを制御してウェブサイトの機能を強化するためのオプションを提供するファイルです。これらのファイルはウェブサイトのディレクトリツリー内の任意のディレクトリに存在し、そのディレクトリとその内部のファイルおよびフォルダーに機能を提供します。
これらの機能とは何ですか?これらはサーバーディレクティブ、つまりサーバーに特定のタスクを実行するよう指示する行です。これらのディレクティブは、このファイルが配置されたフォルダー内のファイルおよびフォルダーにのみ適用されます。これらのファイルは、デフォルトでは非表示にされており、すべてのオペレーティングシステムとWebサーバーがデフォルトで無視するように構成されていますが、非表示のファイルを表示すると、この非常に特別なファイルが見えます。どのようなパラメーターを制御できるかは、後続のセクションでの議論のトピックです。
注意: もし.htaccessファイルが/apache/home/www/Gunjit/ディレクトリに配置されている場合、そのディレクトリ内のすべてのファイルとフォルダに対する指示を提供しますが、このディレクトリに別のフォルダ、すなわち/Gunjit/images/が含まれている場合、再び別の.htaccessファイルがある場合、このフォルダ内の指示はマスター.htaccessファイル(または階層上のフォルダ内のファイル)で提供される指示を上書きします。
Apacheサーバーと.htaccessファイル
Apache HTTP Serverは、一般的にApacheと呼ばれ、アメリカ先住民族アパッチ族に敬意を表して名付けられました。C/C++およびXMLで構築されたApacheは、NCSA HTTPdサーバーに基づくクロスプラットフォームWebサーバーであり、World Wide Webの成長と発展に重要な役割を果たしています。
UNIXで最も一般的に使用されているApacheは、FreeBSD、Linux、Windows、Mac OS、Novel Netwareなど、さまざまなプラットフォームで利用可能です。2009年に、Apacheは1億以上のウェブサイトを提供する最初のサーバーとなりました。
Apacheサーバーには、www/ディレクトリごとに1つの.htaccessファイルがあります。これらのファイルは非表示ですが、必要に応じて表示できます。www/ディレクトリには、ユーザーまたは所有者の名前で名前が付けられたウェブサイトに関連する複数のフォルダがあります。これに加えて、各フォルダに1つの.htaccessファイルを配置することができ、そのフォルダ内のファイルを上記のように構成します。
Apacheサーバーで.htaccessファイルを構成する方法は次のとおりです…
Apacheサーバーでの構成
2つのケースが考えられます:
独自のサーバーでウェブサイトをホスト
.htaccessファイルが有効になっていない場合、.htaccessファイルを有効にするには、単純にhttpd.conf(Apache HTTP Daemonのデフォルト構成ファイル)に移動し、<Directories>セクションを見つけます。
<Directory "/var/www/htdocs">
そして、以下のように記載されている行を探します…
AllowOverride None
そして、それを以下のように修正します。
AllowOverride All
これで、Apacheを再起動すると、.htaccessが機能するようになります。
異なるホスティングプロバイダーサーバーでウェブサイトをホストする
この場合、ホスティング管理者に相談することが良いでしょう。彼らが.htaccessファイルへのアクセスを許可しているかどうかを確認してください。
ウェブサイトのためのApache Web Serverの25の「.htaccess」トリック
1. .htaccessファイルでmod_rewriteを有効にする方法
mod_rewriteオプションを使用すると、リダイレクトや本当のURLを別のURLにリダイレクトして隠すことができます。このオプションは、長くて長いURLを短くて覚えやすいものに置き換えることを可能にし、非常に便利です。
mod_rewriteを許可するには、.htaccessファイルの最初の行に以下の行を追加する練習をしてください。
Options +FollowSymLinks
このオプションにより、シンボリックリンクをたどることができ、ウェブサイトでmod_rewriteオプションを有効にすることができます。URLを短くてわかりやすいものに置き換える方法は後で説明されます。
2. ウェブサイトへのアクセスを許可または拒否する方法
.htaccessファイルは、order、allow、denyキーワードを使用して、その配置されているディレクトリ内のウェブサイト、フォルダ、またはファイルへのアクセスを許可または拒否することができます。
アクセスを192.168.3.1 IPだけに許可する。
Order Allow, Deny Deny from All Allow from 192.168.3.1 OR Order Allow, Deny Allow from 192.168.3.1
オーダーキーワードは、許可、拒否アクセスの処理順序を指定します。上記の「オーダー」ステートメントについて、許可ステートメントが最初に処理され、その後に拒否ステートメントが処理されます。
1つのIPアドレスへのアクセスを拒否する
以下の行は、IPアドレスが192.168.3.1である1人を除くすべてのユーザーのウェブサイトへのアクセスを許可する手段を提供します。
rder Allow, Deny Deny from 192.168.3.1 Allow from All OR Order Deny, Allow Deny from 192.168.3.1
3. 異なるエラーコードのためにApacheエラードキュメントを生成する。
いくつかの簡単な行を使用して、サーバーが利用できないページをユーザー/クライアントがリクエストしたときに生成される異なるエラーコードに対応するエラードキュメントを修正できます。ほとんどの人がウェブブラウザで「404 ページが見つかりません」ページを見たことがあるように、‘.htaccess’ファイルはそのようなエラー条件が発生した場合にどのようなアクションを取るかを指定します。
これを行うには、次の行を‘.htaccess’ファイルに追加する必要があります。
ErrorDocument <error-code> <path-of-document/string-representing-html-file-content>
‘ErrorDocument’はキーワードで、エラーコードは401、403、404、500または有効なエラー表現コードのいずれかであり、最後に‘path-of-document’はローカルマシン上のパス(独自のローカルサーバーを使用している場合)またはサーバー上のパス(ウェブサイトをホストするために他のサーバーを使用している場合)を表します。
例:
ErrorDocument 404 /error-docs/error-404.html
上記の行は、クライアントが無効なページリクエストに対してサーバーが404エラーを報告した場合に表示されるドキュメント‘error-404.html’をerror-docsフォルダーに配置するように設定します。
rrorDocument 404 "<html><head><title>404 Page not found</title></head><body><p>The page you request is not present. Check the URL you have typed</p></body></html>"
上記の表現は、通常のhtmlファイルを表す文字列を配置するのに適切です。
4. Apacheサーバー環境変数の設定/解除
.htaccessファイルでは、ウェブサイトのホスターによって変更が許可されるグローバル環境変数を設定または解除できます。環境変数を設定または解除するには、次の行を.htaccessファイルに追加する必要があります。
環境変数の設定
SetEnv OWNER “Gunjit Khera”
環境変数の解除
UnsetEnv OWNER
5. ファイルの異なるMIMEタイプの定義
MIME(Multipurpose Internet Multimedia Extensions)は、ウェブページを実行する際にブラウザによってデフォルトで認識されるタイプです。ウェブサイトのMIMEタイプを.htaccessファイルで定義することで、サーバーが定義したファイルの異なるタイプを認識して実行できるようになります。
<IfModule mod_mime.c> AddType application/javascript js AddType application/x-font-ttf ttf ttc </IfModule>
ここで、mod_mime.cは異なるMIMEタイプの定義を制御するためのモジュールであり、このモジュールがシステムにインストールされている場合は、ウェブサイトで使用される異なる拡張子のために異なるMIMEタイプを定義するためにこのモジュールを使用できます。サーバーがそれらを理解できるようにします。
6. Apacheでのアップロードとダウンロードのサイズ制限方法
.htaccessファイルを使用すると、特定のクライアントがウェブサイトからアップロードまたはダウンロードするデータ量を制御する機能が提供されます。これには、.htaccessファイルに次の行を追加するだけです。
php_value upload_max_filesize 20M php_value post_max_size 20M php_value max_execution_time 200 php_value max_input_time 200
上記の行は、アップロードの最大サイズ、投稿されるデータの最大サイズ、最大実行時間(つまり、ユーザーがローカルマシンでウェブサイトを実行することが許可される最大時間)、入力時間の最大制約を設定します。