2022年さくらインターネットのレンタルサーバーリニューアル
2022年の春のリニューアルに伴い、旧レンタルサーバーでの設定も一部変更され、拡張子無しのhtacsessの記述が変更した。以前の記述だと拡張子無しでアクセスするとエラーになるので注意する。
PHPは1行の設定だけで拡張子無しでアクセス出来るようになった。さくらインターネットのレンタルサーバーのhtacsessは以下の通り。
htacsess
#サーバの標準文字コード EUC-JP(ujis)
#.htaccessの文字コード・改行コードが文字コード:EUC-JP、改行コード:LF(UNIX)になっていることを確認してください。
#「.htaccess」のパーミッションは「644」にしてください。
#----------------------------
#SSLへリダイレクト
#----------------------------
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
#
#---------------
# php拡張子の省略
#さくらインターネット:レンタルサーバー
#2022年以降は以下を利用する
#--------------
AddType text/html .php
#
以下は2021年までのレンタルサーバーの設定
php.cgiをドメインのルートフォルダの中に移す
/usr/local/php からファイルをコピーしてくる必要がありますが、FTPソフトを使うと改行コード等の問題でエラーになることがある。 さくらインターネットは Telnet が使えませんので、SSHでログインする SSHでログインするためにフリーソフトTera Term をダウンロードする
PHP
-
- cp /usr/local/php/5.2.17/bin/php-cgi /home/(FTPアカウント名)/www/(ドメインのファイル名)/php.cgi
サーバーのコントロールパネルにて独自ドメインを追加した際に設定したディレクトリ名を打ち込みます。 Enterを押してFTPフォルダで「php.cgi」ファイルが確認できれば成功。
パーミションの変更
チェンジモード「chmod」を使用してアクセス権限を付与します。いわゆるパーミション変更ってやつです。
※755でも問題なし。
PHP
-
- cd /home/(FTPアカウント名)/www/
- chmod 705 php.cgi
php.iniファイルをディレクトリ直下に設置する
php.iniファイルを作り以下の内容を記述する。異なるサーバー間でのデータやり取りのアクセスが可能になる。
PHP
-
- allow_url_include = On
- cgi.fix_pathinfo = 1
上の2行目はなくても良い。デフォルト値設定で、php.ini が読み込まれなかったときに使われるものです。※phpのバージョンで記述がことなる
.htaccessに記述する
ファイルのアクセスの優先順位
以下の3行を追加します。
1行目は、表示のファイル優先順位、2、3行目は指定されたファイルにアクセスした場合に「php.cgi」を実行します。
※1行目は無くても問題ありません。
PHP
-
- DirectoryIndex index.html index.php
- Action myphp-script /php.cgi
- AddHandler myphp-script .php .html
php拡張子をなしでもアクセスする
PHP
-
- AddHandler myphp-script .html
- Action myphp-script /php.cgi
この設定でうまくいかない場合はApache 2 系の MultiViewsの設定を行う。
Apache 2 系の MultiViewsの設定
現在さくらのレンタルサーバサービスでは、新規にお申し込みいただきましたサーバは Apache 2.2 系がインストールされております。
Apache 2 系では、MultiViews のデフォルトの設定が Any から NegotiatedOnly に変更されております。この為、以前にご利用しておられましたサーバが Apache 1.3 系であった場合、動作に違いが出る事が考えられます。Apache 1.3 系と同様に Any での動作をご希望されます場合は、.htaccess にて、MultiviewsMatch ディレクティブの設定をご変更くださいますようお願いいたします。
.htaccess に記述した上記設定でうまくいかない場合、で新しくサーバー契約している場合はサーバーの使用が#Apache 2.2 系になっている場合がある。
.htaccessを以下の一文をだけの記述にする。
PHP
-
- #Apache 2.2 系がインストールされているため拡張子なしにする場合は以下MultiviewsMatchが必要
- MultiviewsMatch Handlers Filters
ドメインのトップページと同じ階層に.htaccessをアップロードします。
htmlファイルに記述したPHPスクリプトが稼働するようになります。サイトのメニューを読み込んだり、外部のコンテンツを読み込んだりといろいろできる。
ファイルの1行目に注意する
最初の1行目は <? php でないとエラーになることがある。php.cgiを配置してページが表示されなくなった人は、1行目に以下を書いていないか確認してください。
以下の宣言はXML宣言なので、HTMLの場合はHTML宣言にする。
PHP
-
- <?xml version="1.0" encoding="UTF-8" ?> //1行目が?phpでないとエラーーになる
記述する場合は以下のようにする
PHP
-
- <?php ?>
- <?xml version="1.0" encoding="UTF-8" ?>
さくらサーバーのディレクトリ構成
たぶん合ってると思う・・ 「php.cgi」をディレクトリとして扱っているため、index.htmlにアクセスすると 何故か「/php.cgi/index.html」にアクセスしようとします。
※ディレクトリ構成は以下のとおりです。
■www
┣php.cgi
┣.htaccess
┗■hoge
┗index.html
おそらくですが、「hoge/index.html」にアクセスした際に適用される
上位階層の.htaccessが適用されて「php.cgi/index.html」となっている
■www
┣.htaccess
┗■hoge
┣php.cgi
┗index.html
各階層に「php.cgi」を配置すれば問題は解決。
wwwはさくらのサブドメインファイル置き場