質問: ロリポップですとサブドメインの公開ディレクトリが任意で指定できますが、エックスサーバーですと公開ディレクトリを指定することができないようで困っています。 例えばロリポップでサブドメイン(hoge)を設定し公開ディレクトリをルートディレクトリに指定すると http://hoge.example.com → http://example.com/index.html が表示されます。 これをrewriteで ``` RewriteCond %{HTTP_HOST} ^hoge\.example\.com RewriteRule ^$ /hoge.html [L] ``` とすることで http://hoge.example.com にアクセスすると http://example.com/hoge.html の内容が表示されるようになります。 一方、エックスサーバーではサブドメイン(hoge)を設定するとhogeフォルダが作成され、 そのフォルダ内のファイルしか参照できません。 そこで、サブドメインフォルダであるhogeを削除し、ルートディレクトリの.htaccessに以下のrewriteを記述しました。 ``` RewriteCond %{HTTP_HOST} ^hoge\.example\.com RewriteRule ^hoge/$ /hoge.html [L] ``` 結果は以下のエラーがでてしまいリライトされません。 The requested URL /hoge.html was not found on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. ダメもとで以下の記述してみましたが、やはり無理でした。 ``` RewriteCond %{HTTP_HOST} ^hoge\.example\.com RewriteRule ^hoge/$ hoge.html [L] ``` ただしエラー内容が、The requested URL /home/サーバーID/example.com/public_html/hoge.html was not found on this server. となり、実際にhoge.htmlがある場所を参照しているような感じなのですが、読み取ってくれません。 作成されたhogeフォルダの中にhoge.htmlを入れた状態ですと正しくリライトされます。 エックスサーバーでサブドメイン用のフォルダを作成せずに(削除して)、 .htaccessで公開ディレクトリを指定できる方法はありませんでしょうか?
回答: ご利用のサービスでDocumentRootやFollowSymLinksの指定がどのようになっているか把握できていませんが、下記のようにするといかがでしょうか。 ``` cd /home/サーバーID/example.com/public_html rmdir hoge # ディレクトリが残っている場合 ln -s . hoge ```