見出し画像

Apache(XAMPP)でWebRootとApiRootを分けたい。

アレ、サービスで動かないの?

もともと、NginxとphpのCliで開発してたんだけど、Windowsではこの人達、サービス登録出来ないことに気づいてあわてたログ。
まぁ、こんな感じで、疑似サービスとして登録できないことはなさそうなんだけど、それはそれでイロイロ お客さんに納めるのも怖い気がしたので、解決策を模索してた。

ちな、もともとのディレクトリ構成はこんな感じ

C:\wwwroot
 ⇒NigixのDocumentRoot
C:\apiroot
 ⇒phpで作ったApiRoot
  ここにphp動作設定ファイルとかがあって、さらにapiってフォルダに実際はアクセスする

とりまXAMPP

ということで、困った時のXAMPPでどこまで動かせるかやってみた。

DocumentRootの変更

DocumentRoot "C:/wwwroot"
<Directory "C:/wwwroot">

phpファイルのコピー

c:/wwwrootへ、apirootの中身をガリッとコピー
とりま、このままでも動いた。

DirectoryフュージョンしたせいでGit管理が無理無理

動いたんだけど、致命的なこととして、wwwrootとapirootがフュージョンしちゃったので、Gitも融合しちゃうんですよ。
最初、ignoreで逃げようかとも思ったけど、なんかのはずみでnginx環境に戻った場合とかも考えて、それもしたくない。
2,3日ぼーっと考えてたんですが、Apacheの設定でいけんじゃね?って思いついた。

Aliasで設定


本業の方なら、ぱぱぱぱぱぱーっと思いついて片付けれる問題だと思うけど、こちとら、エセSE(ESESEって回文だなどうでもいいけど)なので、そこまで詳しくない。
なので、
「apache URL ディレクトリ 変える」とかITリテラシー低めのキーワードでググり続けて、なんとかこのサイトにたどり着く

おー、そうだそうだAliasとかあったあったということで、alias_moduleのところに追記

<IfModule alias_module>
    Alias /api "C:/apiroot/api"
    <Directory "C:/apiroot/api">
        Require all granted
    </Directory>

    ScriptAlias /cgi-bin/ "C:/xampp/cgi-bin/"

</IfModule>

ScriptAliasはデフォルトで設定してあるやつ。上のapirootが今回追加したやつ。
最初はWindowsだから、ワンちゃん、下のRequire all granted はいらないかなぁとも思ったけど、
「Forbidden You don't have permission to access this resource.」
って「顔を洗って出直しな」的なメッセージを頂いたのでちゃんと付けたら、普通に動きました。


いいなと思ったら応援しよう!