こんにちは。ネットショップコンサルタント「たぶ」(@yusuke_tanaka34)です。
前回、「EC-CUBE」に入っている「.htaccess」について書きましたが、今回も引き続き「.htaccess」について書きたいと思います。
「.htaccess」についてご説明をすると、大体の方から
と聞かれます。
確かに、「.htaccess」が何か分かったら、書き方も知りたいですよね。
今回は、『EC-CUBEに入っている「.htaccess」の書き方とは』というテーマで、「EC-CUBE」に入っている「.htaccess」の具体的な書き方についてご紹介していきたいと思います。
「EC-CUBE」に入っている「.htaccess」の書き方もマスターして、どんどん「EC-CUBE」を進化させていきましょう。
初めて「.htaccess」ファイルを触る方にも分かりやすいように解説していきます。
ぜひ、この記事を参考に「.htaccess」の書き方をマスターしてくださいね。
スポンサーリンク
EC-CUBEに入っている「.htaccess」ファイルの作り方
それでは、「.htaccess」ファイルの作り方をご説明します。
「.htaccess」の作り方はとても簡単。「.htaccess」の作り方は次の3つです。
- テキストエディタを使って、必要な設定を記述する。
- それを「.htaccess」という特殊なファイル名で保存する。
- 「.htaccess」をWebサーバーへアップロードする。
たったこれだけです。簡単ですね。
「.htaccess」ファイルはテキストファイルなので、「テキストエディタ」があれば作成できます。
「HTML」や「CSS」と同じように、Windowsなら「メモ帳」、Macなら「テキストエディット」でファイルの中身を見たり、編集したりできます。
上記のように「.htaccess」ファイルでできることはたくさんあり、目的に合わせて異なる記述をしていきます。
「.htaccess」ファイルに記述する具体的な内容は、下記を参考にして下さい。
それでは、「.htaccess」ファイルを記述する上での注意点は以下のとおり。
- ファイル名は、「.」(ドット)で始まる「.htaccess」にすること
- 最後に改行を入れること
- テキスト形式で保存すること
- 文字コードを「UTF-8」にする場合、「BOM」はつけない
- 改行コードを「LF」にする
- 拡張子はつけない
- 「.htaccess」ファイルのパーミッションを確認する
それでは、各項目ごとにご説明していきますね。
ファイル名は、「.」(ドット)で始まる「.htaccess」にすること
ファイル名は必ず「.htaccess」にしてください。
先頭の「.」(ドット)は間違いではなく、そういうファイルです。(笑)
「.jpg」のような拡張子はありません。絶対に先頭の「.」(ドット)を忘れないようにしてください。
最後に改行を入れること
「.htaccess」ファイルの最後に必ず改行を入れて下さい。
最後の行が改行でないと、正常に「.htaccess」ファイルが動作しない場合があります。
せっかく「.htaccess」を作成したのに動作しないと悲しいので、「.htaccess」ファイルの最後には必ず改行を入れて下さい。
改行が多い分には問題ありませんので、最後の2~3行を改行しておくことがおすすめです。
テキスト形式で保存すること
「.htaccess」ファイルは、書式情報を含んでいないプレーンテキスト(テキスト形式)で保存してください。
書式情報を勝手につけるテキストエディタがあるので、そういったテキストエディタを使用する場合には注意してください。
文字コードを「UTF-8」にする場合、「BOM」はつけない
「.htaccess」ファイルを記述する文字コードを「UTF-8」にする場合、「BOM」(Byte Order Mark)をつけないようにしてください。
テキストエディタで「.htaccess」ファイルを保存する際に、設定する場所があると思います。(もし「BOM」を設定する場所がない場合は「BOM」が勝手につくかつかないかのどちらかなので、「.htaccess」ファイルが動作しない場合は「BOM」がついていることを疑ってください。)
ちなみに、Windowsの「メモ帳」で文字コードを「UTF-8」で保存すると、勝手に「BOM」がついてしまうので、文字コードを「ANSI」で保存してください。
「.htaccess」ファイルに記述したURLに日本語が含まれている場合は、「%」記号を使った形にエンコードされているか確認して下さい。なるべく日本語が含まれるURLを使用しないほうがおすすめです。
改行コードを「LF」にする
改行コードはできれば「LF」にしてください。
テキストファイルの改行コードですが、Windowsでは「CR+LF」、Macでは「CR」が使われていることがあります。
サーバーによっては改行コードを一般的に使われている「LF」にしないと動作しない場合もあるため、改行コードは「LF」に設定するのがおすすめです。
拡張子はつけない
「.htaccess」に拡張子がついていないか、再度確認してください。
Windowsでは、拡張子を表示しないようにが設定されている場合があります。
気づかないうちにファイルに拡張子がついている場合があるので、お気をつけください。
また、お使いのパソコンやソフトウェアによっては、「.」(ドット)で始まるファイルを作成できないことがあります。
そのような場合は、一度「htaccess.txt」のような形で拡張子をつけて保存し、「htaccess.txt」のままサーバにアップロードして、サーバ上でファイル名を「.htaccess」に変更する方法がおすすめです。
「.htaccess」ファイルのパーミッションを確認する
「.htaccess」ファイルをWebサーバーにアップロードしたら、パーミッション(Webサーバーのアクセス権)を確認してください。
そして、「.htaccess」ファイルのパーミッションは、「755」もしくは「644」にしてください。
パーミッションを「777」などにしてしまうと、誰でもファイルを書き換えられるので、セキュリティー上危険です。
「.htaccess」ファイルをサーバーにアップロードした際は、必ずパーミッションを確認してください。
それでは、次に実際の「.htaccess」の書き方を具体的にご紹介していきますね。
スポンサーリンク
EC-CUBEに入っている「.htaccess」ファイルの書き方
それでは、実際に「.htaccess」に書き込む具体的な記述をご説明しますね。
他にも「.htaccess」でできることはたくさんありますが、今回は前回の記事でご紹介した、
- アクセス制限
- エラーメッセージを独自の内容にカスタマイズ
- デフォルトファイルの変更
- CGIやSSIの有効・無効
- ファイル一覧の表示・非表示
- 自動転送(リダイレクト)
- ユーザー認証機能(BASIC認証)
- デバイスによる条件分岐
- 動的ページの静的ページ化
の記述を見ていきたいと思います。
アクセス制限
「.htaccess」に記述することで、アクセス制限をかけることができます。
すべてのアクセスを拒否したい場合は、「.htaccess」にこのように記述します。
deny from all
逆に、すべてのアクセスを許可したい場合は、「.htaccess」にこのように記述します。
allow from all
次に、特定のファイルをへのアクセスを拒否したい場合は、「.htaccess」にこのように記述します。
<Files 拒否したいファイル名> deny from all </Files>
次に、特定の拡張子がついたファイルへのアクセスを拒否したい場合は、「.htaccess」にこのように記述します。(例えば、cssファイルの場合)
<Files ~ ".css$"> deny from all </Files>
次に、アクセスを拒否したい特定の拡張子がついたファイルが複数ある場合は、「.htaccess」にこのように記述します。(例えば、css・Javascript・phpの場合)
<Files ~ ".(css|js|php)$"> deny from all </Files>
次に、特定のIPアドレスやアドレスからのアクセスのみ許可したい場合は、「.htaccess」にこのように記述します。
order deny,allow deny from all allow from 1.1.1.1 allow from .co.jp
上記の記述の意味としては、
- 1行目:「deny」(拒否)→「allow」(許可)の順番で読み込んでください。
- 2行目:全てのアクセスを拒否します。
- 3行目:IPアドレス「1.1.1.1」からのアクセスだけを許可します。
- 4行目:「.co.jp」からのアクセスだけを許可します。
です。逆に、特定のIPアドレスやアドレスからのアクセスのみ拒否したい場合は、「.htaccess」にこのように記述します。
order allow,deny allow from all deny from 2.2.2.2 deny from .com
上記の記述の意味としては、
- 1行目:「allow」(許可)→「deny」(拒否)の順番で読み込んでください。
- 2行目:全てのアクセスを許可します。
- 3行目:IPアドレス「2.2.2.2」からのアクセスだけを拒否します。
- 4行目:「.com」からのアクセスだけを拒否します。
です。おそらくこの「アクセス制限」が「.htaccess」の記述で一番使う気がします。
セキュリティーの観点からも「.htaccess」を使用して、アクセス制限をすることはおすすめです。
エラーメッセージを独自の内容にカスタマイズ
「.htaccess」に記述することで、独自のエラーメッセージを表示することができます。
まずは、表示させたいエラーページを作成します。
エラーメッセージとしては、
- 認証に失敗した場合:401 Unauthorized
- アクセスが禁止されている場合:403 Forbidden
- 指定したページが見つからない場合:404 Not Found
- サーバ内部にエラーがあった場合:500 Internal Server Error
- アクセスが集中して利用できなくなった場合:503 Service Unavailable
などが考えられます。
例えば、「404エラー」で表示するページとして、「404.html」を作成しておきます。(各エラーに対応するページを作成するのがおすすめです。)
「.htaccess」への記述方法としては、
ErrorDocument (コード) (サーバー上の絶対パス)
と記述します。例えば「404エラー」が発生した時に、「https://tab-log.com/error/」に入っている「404.html」というファイルを表示させたい場合は、
ErrorDocument 404 /error/404.html
と記述します。
その際、パス部分は「絶対パス」で記入するのですが、Webサーバーの絶対パスなので「https://tab-log.com」の部分は記述せず、「/」(スラッシュ)から始めてください。
「/」(スラッシュ)を忘れないように気をつけてくださいね。
また、「ErrorDocument」と「404」の間、「404」と「/error/404.html」の間には「 」(半角スペース)が入っているのもお忘れなく。
デフォルトファイルの変更
次に、「.htaccess」に記述することで、「デフォルトファイル」を変更することができます。
通常は「index.html」が「デフォルトファイル」ですが、「front-page.php」や「home.php」に変更することが可能です。
「.htaccess」の記述方法は、
DirectoryIndex (表示させたいファイル名)
と記述します。例えば「index.html」ではなく「front-page.php」を表示させたい場合、
DirectoryIndex front-page.php
と記述します。もし複数のファイルを優先順位に沿って表示させたい場合、以下のように記述します。
例えば、「front-page.php」→「home.php」→「index.html」という順に表示させたい場合、
DirectoryIndex front-page.php home.php index.html
と記述します。
CGIやSSIの有効
「EC-CUBE」ではあまり使用しないかもしれませんが、「CGI」や「SSI」を使用する場合、「.htaccess」に記述しなければいけません。
「CGI」を有効にしたい場合は、「.htaccess」にこのように記述します。
Options +ExecCGI AddHandler cgi-script cgi AddType application/x-httpd-cgi cgi pl
上記の記述の意味としては、
- 1行目:「Optionsディレクティブ」の「ExecCGI」を追加で使用しますよ。
- 2行目:「.cgi」という拡張子のものは「cgi-script」として実行しますよ。
- 3行目:「.cgi」と「.pl」という拡張子のファイルは「application/x-httpd-cgi」という「MIMEタイプ」ですよ。
です。「ディレクティブ」とは「コマンド」のような意味で、上記の「Optionディレクティブ」は「オプションコマンド」だと思ってください。
「MIMEタイプ」とは「このファイルはこんな種類のファイルです。」という意味の情報です。上の例で言うと『「application」というカテゴリーに分類される「x-httpd-cgi」というファイル』という意味ですね。
要するに「CGIを有効にしますよ。」という意味です。
次に、「SSI」を有効にしたい場合は、「.htaccess」にこのように記述します。
Options +Includes AddHandler server-parsed shtml AddType text/html shtml
上記の記述の意味としては、
- 1行目:「Optionsディレクティブ」の「Includes」を追加で使用しますよ。
- 2行目:「.shtml」という拡張子のものは「server-parsed」として実行しますよ。
- 3行目:「.shtml」という拡張子のファイルは「text/html」という「MIMEタイプ」ですよ。
です。上記の「CGI」を有効にする時とほぼ同じで、使用している「AddHandler」と「MIMEタイプ」が違うことに注目です。
次に、拡張子「.html」でSSIを有効にしたい場合は、「.htaccess」にこのように記述します。
Options +Includes AddHandler server-parsed html
上記の記述の意味としては、
- 1行目:「Optionsディレクティブ」の「Includes」を追加で使用しますよ。
- 2行目:「.html」という拡張子のものは「server-parsed」として実行しますよ。
です。「html」はもうなくてはならないコードなので、「AddType」は使用しなくても大丈夫です。
ちなみに、「AddHandler」や「AddType」に記述してある最後の「pl」や「html」などは「.」(ドット)をつけてもつけなくても大丈夫です。
ファイル一覧の表示・非表示
次に、「.htaccess」を使ってブラウザからファイル一覧を表示・非表示させる方法をご説明しますね。
ブラウザからファイル一覧が見えてしまうと、セキュリティ的にかなり危険なので、基本的にはファイル一覧を非表示にする方が多く使うと思います。
デェレクトリに入っているファイル一覧を表示させたい場合は、「.htaccess」にこのように記述します。
Options +Indexes
デェレクトリに入っているファイル一覧を表示させたくない場合は、「.htaccess」にこのように記述します。
Options -Indexes
自動転送(リダイレクト)
次に「.htaccess」に記述することで、自動転送(リダイレクト)を行うことができます。
「.htaccess」を使った自動転送(リダイレクト)には「301リダイレクト」と「302リダイレクト」があります。
「301リダイレクト」とは「完全にお引越しするためのリダイレクト」。
「302リダイレクト」とは「一時的に転送するためのリダイレクト」です。
「.htaccess」でできる「301リダイレクト」と「302リダイレクト」は、
「301リダイレクト」と「302リダイレクト」の違い
301リダイレクト | 302リダイレクト | |
---|---|---|
意味 | 完全にお引越しするリダイレクト | 一時的に使うリダイレクト |
キャッシュ | キャッシュする | キャッシュしない |
ページランク | 引き継ぐ | 引き継ぐ |
インデックス | リンク先URLがされる | リンク元URLがされる |
という違いがあります。
状況に応じて、使い分けを行いましょう。
それでは、実際に「.htaccess」への記述方法をご説明しますね。
「301リダイレクト」の記述方法
ファイルのリダイレクト
RewriteEngine on RewriteRule ^tab.html$ https://tab-log.com/log.html [R=301,L]
この場合は、「tab.html」にアクセスがあった場合、「log.html」へリダイレクトされます。
フォルダのリダイレクト
RewriteEngine on RewriteRule ^tab(.*)$ /log$1 [R=301,L]
この場合は、「tab」というディレクトリ(パソコンでいう「フォルダ」)にアクセスがあった場合、「log」というディレクトリへリダイレクトされます。
サイトのリダイレクト
RewriteEngine On RewriteCond %{http_host} ^tab-log.com RewriteRule ^(.*) http://tab-log-new.com/$1 [R=301,L]
この場合は、「tab-log」というサイトにアクセスがあった場合、「tab-log-new.com」というディレクトリへリダイレクトされます。
「302リダイレクト」の記述方法
「302リダイレクト」の方法は簡単で、上記の「301リダイレクト」の[R=301,L]の部分を[R=302,L]に変更するだけです。
ユーザー認証機能(BASIC認証)
次に「.htaccess」に記述することでできる、ユーザー認証機能(BASIC認証)についてご説明しますね。
例えば、特定のページを閲覧する際に、IDとパスワードを使ってログインするような画面を出す場合に使用します。(ネットショップの管理画面など)
AuthUserFile /絶対パス/.htpasswd AuthGroupFile /dev/null AuthName "Please enter username and password" AuthType Basic require valid-user
上記の記述の意味としては、
- 1行目:ここに「.htpasswd」を配置していますよ。
- 2行目:グループごとのアクセス制限はしませんよ。
- 3行目:ユーザー認証画面で「Please enter username and password」というメッセージを表示しますよ。
- 4行目:「ベーシック認証」を使用しますよ。
- 5行目:IDとパスワードが合っていれば誰でもアクセスできますよ。
です。また、「BASIC認証」を設定するためには、上記の「AuthUserFile」に記述しているパスに「.htpasswd」を入れなくてはいけません。
「.htpasswd」の作成方法は、ご自身で作成する方法もあるのですが、ややこしいので「.htpasswd作成ツール」がおすすめ。
LUFTTOOLSさん
TECH-UNLIMiTEDさん
sanmediaさん
などで作成してみてください。
「.htpasswd」が作成できたら、上記の「AuthUserFile」に記述しているパスに「.htpasswd」を入れてください。
「.htpasswd」は絶対に誰にも見られたくないファイルなので、できればブラウザからアクセスできるような場所に置かないでください。
それが難しい場合は、「.htaacess」に下記を記述して、「.htpasswd」を見えないようにしてください。
<Files ~ "^\.ht"> Order allow,deny Deny from all Satisfy All </Files>
もしくは、「.htaccess」に
AddHandler cgi-script htpasswd
と記述してみてください。
デバイスによる条件分岐
次に「.htaccess」に記述することでできる、デバイスによる条件分岐についてご説明しますね。
「EC-CUBE」で作成したネットショップが「レスポンシブWebデザイン」であれば大丈夫なのですが、スマホやタブレットなどで表示する画面を別のファイルで作っている場合、デバイスに合わせて表示する画面を分岐させなくてはいけません。
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (iPhone|iPad|Android.*Mobile|Windows.*Phone) [NC] RewriteRule ^(.*)$ sp/$1 [R]
と「.htaccess」に記述すると、
- iphone
- iPad
- Android
で、「sp」というディレクトリに入っているファイルが開かれるようになります。
動的ページの静的ページ化
次に「.htaccess」に記述することでできる、動的ページの静的ページ化についてご説明しますね。
「動的ページ」はうまく検索エンジンに登録されない可能性があるため、静的ページで表示することがおすすめです。(最近の検索エンジンは「動的ページ」もちゃんとクロールしてくれるとの事です。)
RewriteEngine on RewriteRule tab-log(.+)\.html$ tab-log.php?id=$1
もしくは、
RewriteEngine on RewriteRule tab-log\-([0-9A-Za-z)]+)\.html$ tab-log.php?num=$1
と「.htaccess」に記述してください。
そうすると、「tab-log.php?id=1」を「tab-log-1.html」として表示してくれます。
以上です。お疲れ様でした!
ここまで「.htaccess」ファイルの具体的な書き方をご紹介してきました。
「.htaccess」のアップロード
それでは、最後に「.htaccess」をサーバーにアップロードしましょう。
「.htaccess」をアップロードする際に
- ファイル名が「.htaccess」か確認
- スペルミスや空白の確認
- 最後に改行を確認
- 保存形式の確認
- 文字コードの確認
- 改行コードの確認
- 「.htaccess」ファイルのパーミッションを確認
を確認し、エラーが出ないように気をつけましょう。
スポンサーリンク
まとめ
今回は『EC-CUBEに入っている「.htaccess」の書き方とは』というテーマでお送りしてきました。
今回、「EC-CUBE」に入っている「.htaccess」に記述を書き込むことで、
- アクセス制限
- エラーメッセージを独自の内容にカスタマイズ
- デフォルトファイルの変更
- CGIやSSIの有効
- ファイル一覧の表示・非表示
- 自動転送(リダイレクト)
- ユーザー認証機能(BASIC認証)
- デバイスによる条件分岐
- 動的ページの静的ページ化
などができるようになることが分かりました。
今回ご紹介した「.htaccess」の書き方は、ごくごく一部です。
「.htaccess」は、まだまだやれることがたくさんあるのです。
「.htaccess」をマスターして、「EC-CUBE」を使いこなしちゃいましょう!
「EC-CUBE」に関して他にも気になることがありましたら、お問い合わせまでご連絡ください。
以上、ネットショップコンサルタントの「たぶ」でした。
「EC-CUBE」に関しては、こちらの記事もおすすめです。