XAMPPでlocalhostが起動しないを解決

PHPスクリプトの動作を確認するため、パソコンにXAMPPをインストールしてWEBサーバーの環境をつくりました。XAMPPは、XAMPP USB Lite 1.7.7のZIP版をC:/xamppフォルダに展開してインストール完了です。C:/xamppフォルダ内にできたxampp-control.exeを起動してApacheとMysqlのスタート釦を押してサービスをスタートします。この状態で、ブラウザのURL欄にhttps://localhost/を入力すれば、XAMPPの管理画面が開くはず・・・。

ところが、接続待ちの状態でlocalhostにつながりません。この症状はかなり起きているようで、ググると沢山でてきます。SKYPEがじゃましているとか、ファイヤーウォールを切ればいいとか・・原因はいろいろです。そこで、ポートの競合を調べたり、ウィルス対策ソフトを一時停止したりと、考えられる対策を手当たり次第取ったのですが・・それでもlocalhostは起動しませんでした。

そのような対策中、私の環境でlocalhostに繋がったのは、xampp-control.exeの起動前にコマンドプロンプトで”netsh winsock reset”を実行した時でした。それに喜んでパソコンを再起動すると、また繋がらなくなります。

netshの画面

そこで更に調べてみると…..ウィルス対策ソフト(ウイルスセキュリティ)のファイヤーウォールでwinsockを制限していることが原因で、localhostが起動しないようです。これはウィルス対策ソフトの一時停止では解決しません。ウィルス対策ソフトは一時停止になってもwinsockの設定を元に戻さないんです。とすれば、xampp-control.exeの起動前に毎回”netsh winsock reset”を実行すれば何とかなりそうです。そこで、次のようなバッチファイルを作りました。

netsh winsock reset
c:/xampp/xampp-control.exe

このバッチファイルを試しに使ってみると…ウィルス対策ソフト(ウイルスセキュリティZERO)を一時停止しなくても、localhostが起動するようになりました。

localhostの画面

ウイルスセキュリティZEROを使っていて、同じ症状の方のご参考になれば幸いです。

さくらインターネットで indexof を表示しないように。

さくらインターネットでは、URLで指定されたファイルが存在しないと、indexof 画面になってファイル名一覧が表示されます。WEBページのつもりでこれが出ては吃驚してしまいます。そこで、indexof 画面が出ないように設定しました。

1.サーバーコントロールパネルを開く

サーバーコントロールパネル
まず、サーバーコントロールパネルにログインします。このサーバーコントロールパネルの『運用に便利なツール』から、ファイルマネージャ(右図参照)を開きます。新旧どちらも使えますが、ここは新ファイルマネージャで行きます。

2.ファイルマネージャ

まず、一番上のフォルダーに移動します。例えば、home/hoge/www 。画面の上部メニューから『表示アドレスへの操作』をクリックし、ダウンメニューから『アクセス設定』をクリックします。

3.アクセス設定

アクセス設定アクセス設定のダイアログで、『indexファイル』のタブを選択します。ここで、『indexファイルの名前』欄に、『index.php』があるか確認します。もし無ければ、この欄に『index.php』を追加します。実はここが落とし穴でした。これをせずに、後の設定を行うと、『index.php』へ自動的に飛ばなくなります。そのため、暗黙的に『index.php』を使用するページが表示されなくなって慌てることなります。次に、『ファイルが存在しない場合の動作』で、アクセス拒否にチェックをいれます。OKボタンを押して設定完了です。これで、indexof 画面は表示されなくなりました。

さくらインターネットで 「wwwなしに統一」 を解決

www.ドメイン名.jp を wwwなしのドメイン名.jp にリダイレクトしようと、.htaccessに

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^ドメイン名.jp [NC]
RewriteRule ^(.*)$ – [L]
RewriteCond %{HTTP_HOST} ^www.ドメイン名.jp [NC]

RewriteRule ^(.*)$ https://ドメイン名.jp/$1 [R=301, L]

と書き込みましたが、うまくリダイレクトできません。 さくらでOptions +FollowSymLinks を使えないことが原因のようです。 %{HTTP_HOST}が、www有りと無しとを区別しません。

そこで、こちらを参考にして解決しました。以下、 その解決手順です。

  1.  まず、さくらのドメイン名.jpのドメイン設定で
    ・wwwを付与せずマルチドメインとして使用する(上級者向け)
    を選択する。
  2.  次に、『新しいドメインを追加する』でwww.ドメイン名.jpを追加する。 このとき、www.ドメイン名.jpのフォルダパスを、ドメイン名.jpとは別に設定する。 これでブラウザからwww.ドメイン名.jpが呼び出されると、ドメイン名.jpとは別のフォルダパスに飛びます。
  3.   このwww.ドメイン名.jpのフォルダパスに.htaccessを置いて
    RewriteEngine on RewriteBase /
    # 通常のURL(ドメイン名.jp/)にリダイレクト。
    RewriteRule ^(.*)$ https://ドメイン名.jp/$1 [R=301,L]

    を書き込む。

  4. これなら、フォルダパスの飛び先でwww有りを判別し、www無しにリダイレクトできます。 このリダイレクトで飛ぶのは、www無しのフォルダパスです。 www有りのフォルダパスに再び戻ることはないので、無限ループ問題も起こりません。
    1. これで、スッキリ解決しました。