さくらインターネット・レンタルサーバー.htaccess拡張子なし表示の初期設定

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 をダウンロードする

さくらインターネット・レンタルサーバー.htaccess拡張子なし表示の初期設定、説明画像1
さくらインターネット・レンタルサーバー.htaccess拡張子なし表示の初期設定、説明画像2

PHP

  1.  
  2. cp /usr/local/php/5.2.17/bin/php-cgi /home/(FTPアカウント名)/www/(ドメインのファイル名)/php.cgi

サーバーのコントロールパネルにて独自ドメインを追加した際に設定したディレクトリ名を打ち込みます。 Enterを押してFTPフォルダで「php.cgi」ファイルが確認できれば成功。

パーミションの変更

チェンジモード「chmod」を使用してアクセス権限を付与します。いわゆるパーミション変更ってやつです。
※755でも問題なし。

>

PHP

  1.  
  2. cd /home/(FTPアカウント名)/www/
  3. chmod 705 php.cgi

php.iniファイルをディレクトリ直下に設置する

php.iniファイルを作り以下の内容を記述する。異なるサーバー間でのデータやり取りのアクセスが可能になる。

PHP

  1.  
  2. allow_url_include = On
  3. cgi.fix_pathinfo = 1

上の2行目はなくても良い。デフォルト値設定で、php.ini が読み込まれなかったときに使われるものです。※phpのバージョンで記述がことなる

.htaccessに記述する

ファイルのアクセスの優先順位

以下の3行を追加します。
1行目は、表示のファイル優先順位、2、3行目は指定されたファイルにアクセスした場合に「php.cgi」を実行します。
※1行目は無くても問題ありません。

PHP

  1.  
  2. DirectoryIndex index.html index.php
  3. Action myphp-script /php.cgi
  4. AddHandler myphp-script .php .html

php拡張子をなしでもアクセスする

PHP

  1.  
  2. AddHandler myphp-script .html
  3. 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

  1.  
  2. #Apache 2.2 系がインストールされているため拡張子なしにする場合は以下MultiviewsMatchが必要
  3. MultiviewsMatch Handlers Filters

ドメインのトップページと同じ階層に.htaccessをアップロードします。
htmlファイルに記述したPHPスクリプトが稼働するようになります。サイトのメニューを読み込んだり、外部のコンテンツを読み込んだりといろいろできる。

ファイルの1行目に注意する

最初の1行目は <? php でないとエラーになることがある。php.cgiを配置してページが表示されなくなった人は、1行目に以下を書いていないか確認してください。

以下の宣言はXML宣言なので、HTMLの場合はHTML宣言にする。

PHP

  1.  
  2. <?xml version="1.0" encoding="UTF-8" ?> //1行目が?phpでないとエラーーになる

記述する場合は以下のようにする

PHP

  1.  
  2. <?php ?>
  3. <?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はさくらのサブドメインファイル置き場

タイトルとURLをコピーしました