.htaccess の設定方法
CPI サーバーで .htaccess をご利用いただくには、設定を適用させたいディレクトリ上に .htaccess ファイルを設置いただければ、即時設定が反映されます。
※ただし、「html」配下のディレクトリが対象であることが必須です。
なお、.htaccess の記述内容によっては、ウェブコンテンツにアクセスできなくなったり、サーバーに負荷をかけるような状態に陥ってしまう場合があります。
そのため、作業につきましてはお客さまの自己責任の下、記述内容や設定内容に十分ご注意ください。
また、.htaccess の作成や設置に関しましては、お客さまのコンテンツにも依存することがあるため、技術サポートの対象外となっております。
ここに記載している内容は、一般的な設定内容となりますことご注意ください。
.htaccess をご利用いただくお客さまへ
■シンボリックリンクをご利用の際は、以下の記述にてご利用ください。
Options +SymLinksIfOwnerMatch
RewriteEngine on
■.htaccess の各行の途中に「#」でコメントアウトするとエラーになります。
コメントアウトされる場合は、行を分けて記述してください。
目次
PHP を利用する
ウェブサーバーで PHP をご利用いただくにあたり、PHP のバージョンが標準のもので良いかどうかで利用方法が異なります。
こちらについての詳細は PHP のご利用方法をご参照ください。
php.ini の設定を下位ディレクトリ全体に反映する
php.ini の設定を下位ディレクトリ全体に反映
suPHP_ConfigPath /usr/home/********/example/
※「********」部分はウェブコントロールパネル ID に置き換えてください。
※「example」部分は反映させたいディレクトリ名に置き換えてください。
※記述いただく Path(上記例の場合は /example)配下には、反映させたい php.ini を設置してください。
PHP を .html や .htm などの拡張子ファイルとして実行する
PHP7.1 を .htmlや.htm などの拡張子ファイルとして実行する場合
AddHandler x-httpd-php71 .php .html .htm
ご契約サーバーでご利用いただける PHP のバージョンにつきましては、PHP バージョン一覧をご参照ください。
シンボリックリンクを有効化する場合
mod_rewrite を利用する場合
以下の 2 行の記述が必要となります。
なお、シンボリックリンクのリンク元ファイルとリンク先ファイルが、お客さま領域(同一のウェブコントロールパネル ID)内にあることが条件となります。
Options +SymLinksIfOwnerMatch RewriteEngine On
※上記のように必ず「+」記号をつけてください。
リダイレクト(転送)設定する
サーバーでリダイレクトを有効化するには、以下の 2 行の記述が必要となります。
Options +SymLinksIfOwnerMatch RewriteEngine On
※上記のように必ず「+」記号をつけてください。
例1:www なしで接続があった場合に www ありの URL にリダイレクトする
Options +SymLinksIfOwnerMatch RewriteEngine On RewriteCond %{HTTP_HOST} ^example\.jp RewriteRule (.*) http://www.example.jp/$1 [R=301,L]
※URL に続く数字は、下記の意味があります。運用に応じてステータスコードを変更してください。
301 リダイレクト:恒久的なリダイレクト
302 リダイレクト:一時的なリダイレクト
例 2:ホームページに対して http(通常の 80 番ポート)で接続があった場合に、強制的に https(SSLの 443 番ポート)での接続に変更する
Options +SymLinksIfOwnerMatch RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://www.example.jp/$1 [L,R]
※ https の接続には SSL サーバー証明書のお申し込みが必要です。
上記例は、コモンネームを[www.example.jp]とした SSL サーバー証明書を取得していることを前提とした説明です。
例 3:特定のディレクトリ(例:aaa)に対するアクセスを、別のディレクトリ(例:bbb)にリダイレクトする
Options +SymLinksIfOwnerMatch RewriteEngine On Redirect permanent /aaa/ http://www.example.jp/bbb/
例 4:転送元に対するアクセスを、すべて転送先のトップページにリダイレクトする
Options +SymLinksIfOwnerMatch RewriteEngine On RedirectMatch 301 .* http://www.example.jp/
例 5:携帯電話の振り分け設定
Options +SymLinksIfOwnerMatch RewriteEngine On # docomo RewriteCond %{HTTP_USER_AGENT} DoCoMo RewriteRule ^$ http://example.jp/i/index.html [R] # SoftBank RewriteCond %{HTTP_USER_AGENT} SoftBank RewriteRule ^$ http://example.jp/s/index.html [R] # au RewriteCond %{HTTP_USER_AGENT} UP.Browser RewriteRule ^$ http://example.jp/au/index.html [R] # Android RewriteCond %{HTTP_USER_AGENT} Android RewriteRule ^$ http://example.jp/android/index.html [R] # iPhone RewriteCond %{HTTP_USER_AGENT} iPhone RewriteRule ^$ http://example.jp/iphone/index.html [R] # iPad RewriteCond %{HTTP_USER_AGENT} iPad RewriteRule ^$ http://example.jp/ipad/index.html [R]
※.htaccess では、各モバイル機器ごとの振り分けルールのみ設定します。
振り分け先のコンテンツは別途ご用意ください。
表示順序の変更
index から始まるファイルについて、サーバーでの優先順位(読み込み順)は、以下の通りです。(上から優先順位の高い順)
1. index.html
2. index.shtml
3. index.cgi
4. index.hdml
5. index.htm
6. index.php
例:index ファイルの読み込み順を変更する
※DirectoryIndex の後に、表示させる順で記述してください。
以下の設定例の場合、 index.html よりも先に index.cgi を探して表示します。
index ファイルの読み込み順の変更
DirectoryIndex index.cgi index.html
エラーページの表示設定
エラーページは独自のページを用意することができます。
例:独自のエラーページを作成して、エラー時に表示する
エラーコード 401:Authorization Required(認証失敗)
ErrorDocument 401 /error/401.html
※ローカル URL(=自サイト内の絶対パスで表現されるもの)である必要があります。
または
ErrorDocument 401 '<html><head><meta http-equiv="Refresh" content="0;url=http://example.jp/error/401.html"></head></html>'
エラーコード 403:Forbidden(閲覧権限が無い)
ErrorDocument 403 http://example.jp/error/403.html
エラーコード 404:Not Found(ページが見つかりません)
ErrorDocument 404 http://example.jp/error/404.html
エラーコード 500:Internal Server Error(サーバ内部エラー)
ErrorDocument 500 http://example.jp/error/500.html
※URL は表示させたいエラーページのアドレスに置き換えてください。
※アクセス集中を表す 503 エラー(Service Temporarily Unavailable)につきましては、サーバー側で制御しているため、お客さまにて変更いただけません。ご了承ください。
アクセスを制御(拒否/許可)する
HP へのアクセスを制御する場合は、 1 行目に優先順位を指定する必要があります。
通常、以下のように設定します。
一部のアクセス元のみを拒否する場合 → 許可を優先
一部のアクセス元のみを許可する場合 → 拒否を優先
例1:IP アドレス(192.0.2.1)からの接続のみを許可する
order deny,allow deny from all allow from 192.0.2.1
※IP アドレス(192.0.2.1)は、設定したい IP アドレスに置き換えてください。
例 2:IP アドレス(192.0.2.1)からの接続以外を許可する
order allow,deny allow from all deny from 192.0.2.1
※IP アドレス(192.0.2.1)は、設定したい IP アドレスに置き換えてください。
SSIを「.shtml」以外の拡張子で使用する
.htaccess ファイルに以下の記述をしてください。
なお、拡張子が「.shtml」の場合は、.htaccess ファイルに記述する必要はありません。
<FilesMatch \.html$> SetHandler server-parsed </FilesMatch>
MIME タイプを定義する
サーバーにアップロードしたファイルの扱い方を定義します。
例 1:PHP 以外の拡張子を PHP として処理する
.htm や .html ファイルを拡張子のままではなく php7.1 として処理
AddHandler x-httpd-php71 .htm .html
※AddType による設定はご利用いただけません。
※ご契約サーバーでご利用いただける PHP のバージョンにつきましては、 PHP のご利用についてをご参照ください。
例 2:サーバーでデフォルト MIME タイプとして定義されていない MIME タイプを追加する
pdf ファイルと jpeg ファイルを MIME タイプとして定義
AddType application/pdf .pdf AddType image/jpeg .jpeg
※上記は設定例です。
実際には、定義する必要がない場合や、定義してもサーバーの仕様上ご利用いただけない MIME タイプもあります。
こちらにつきましては、CPI から設定ファイルの詳細などは案内していないため、お客さま側で実際にお試しいただくようお願いしております。
mod_deflate モジュールの利用方法
mod_deflate とは、サーバー側でコンテンツを圧縮してからクライアント側に送信する機能で、
転送量を軽減し表示速度の高速化が期待できます。
.htaccess ファイルに記述しなくても圧縮される MIME タイプ
以下の MIME タイプについては、ウェブサーバー側で自動的に mod_deflate により圧縮されます
- text/html
- text/plain
- text/css
- text/javascript
- application/x-javascript
- application/javascript
- application/ecmascript
上記以外の MIME タイプ
.htaccess ファイルに記述することでウェブサーバー側で mod_deflate により圧縮されます。
<書式>
<IfModule deflate_module> AddOutputFilterByType DEFLATE (mod_deflate を有効にしたい MIME タイプ) </IfModule>
<記述例 (MIME タイプ「text/xml」を圧縮させたい場合)>
<IfModule deflate_module> AddOutputFilterByType DEFLATE text/xml </IfModule>
特定の拡張子を圧縮させない方法
例として、拡張子が「.php」のファイルを圧縮させない方法を記載します。
<FilesMatch \.php$> SetEnv no-gzip </FilesMatch>
更新日 / 2022 年 9 月 29 日