サーバー設定


【さくらVPS】php.ini の設定変更の覚書

さくらVPSでphpをインストールした際、別のサーバーでは出なかったエラーが出るようになった。
エラーを表示にした時の設定の覚書

初期設定でphpのエラー出力が非表示になっていたので表示するに変える
-------------------------------------------------
display_errors = Off
-------------------------------------------------
↓↓↓
-------------------------------------------------
display_errors = On
-------------------------------------------------

初期設定が↓のようになっていて「Notice: Undefined index」エラーが出るので変更
-------------------------------------------------
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
-------------------------------------------------

-------------------------------------------------
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
-------------------------------------------------

さくらのサブドメインを別のサーバーで使いたい

やりたいこと

現在、さくらレンタルサーバーAでドメインとサブドメイン一個を運用中。ドメイン自体はお名前.comで取得したもの。

これにサブドメインをもう一個追加したい。追加先は新しく契約したさくらレンタルサーバーB。

現在
-------------------------
ドメイン ← さくらレンサバAで運用中
サブドメイン ← さくらレンサバAで運用中
-------------------------

こうしたい
-------------------------
ドメイン ← さくらレンサバAで運用中
サブドメイン ← さくらレンサバAで運用中
新サブドメイン ← さくらレンサバBに追加
-------------------------

さくらレンサバBにサブドメインの設定をして、ドメイン取得元のお名前.comでDNS設定をする。

参考:サブドメインの設定方法メモ

しかし、設定が完了し時間をおいても一向にサブドメインにアクセスできない。IEでアクセスしても「見つかりません」エラーが返ってくる。Chormeでアクセスするとエラー内容の詳細が分かった。

エラー内容
----------------------------------------------------------
The requested URL /php.cgi/index.html was not found on this server.
----------------------------------------------------------

ようは、新しいサブドメインのルートフォルダにphp.cgiがなかったからで、コピーしたら動いた。

参考:さくらインターネットでPHPを.htmlで動かす.htaccessの設定方法

さくらのmysqlサーバーのサブドメインを指定した別サーバーからもログイン可能。(レンサバAのmysqlサーバーにレンサバBからログインができる)

RewriteRuleで同じ名前のフォルダから同じファイルへのリダイレクトができない

top.html というファイルに http://example.com/top/ というurlでアクセスするために、.htaccess に以下の記述をした。

---------------------------
RewriteEngine on
RewriteRule top/$ /top.php
---------------------------

しかしリダイレクトがされない。なぜか?
おそらく RewriteRule の「top/$」の部分は、そういう名前のファイルがないことを条件に指定したパスへリダイレクトを行うからだと思う。だから、top.php という名前のファイルが存在している状態で「RewriteRule top/$」と指定すると top.php というファイルがあるからリダイレクトにならない。(本当なら「top/」のパターンに top.php はマッチしないはずだが)

ひとつわかったこと
転送先のURLのディレクトリに .htaccess ファイルがあると転送後にさらにリダイレクトが実行されるのではまる!!

top.php ファイルがルートディレクトリにない状態だとリダイレクトできる。
ただ、ファイルがないので404エラーになる。
↓↓
---------------------------
RewriteEngine on
RewriteRule top/$ /top.php
---------------------------

top.php ファイルがルートディレクトリにある状態でも以下の書き方ならリダイレクトする。

---------------------------
RewriteEngine on
RewriteRule top/$ /toppage.php
---------------------------

OR

---------------------------
RewriteEngine on
RewriteRule tap/$ /top.php
---------------------------

RewriteRule はいまいちよく分からない。