.htaccessでドキュメントルートを変更する方法

このQ&Aのポイント
  • .htaccessを使用してドキュメントルートを変更する方法を調べています。
  • 一般的なレンタルサーバを使用しており、現在のドキュメントルートは/www/です。
  • root権限がないため、httpd.confを変更することはできませんが、.htaccessの設置は可能です。ドキュメントルートを/www/xxxx/に変更したいと考えています。リダイレクトによる変更ではアドレスが変わってしまうため、別の方法を探しています。
回答を見る
  • ベストアンサー

.htaccess にてドキュメントルートは変更でいますか。

一般的なレンタルサーバを借りています。 現在ドキュメントルートは、 /www/ になっています。このドキュメントルートを /www/xxxx/ と変更したいと思います。 httpd.conf を変更出来れば可能なのは理解していますが、root 権限の無いレンタルサーバなため、httpd.conf は変更出来ません。 .htaccess の設置は可能なので .htaccess でドキュメントルートは変更出来ないでしょうか。調べた感じでは出来そうにないと思っていますが、確認のため質問させて頂きます。 現在は、.htaccess でリダイレクトしていますが、アドレスが変わってしまうので何とかしたいと思っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.2

なるほど。わかりました。 mod_rewrite を使えば出来そうですが、mod_rewriteは難しい。.htaccessで、 RewriteEngine on RewriteRule /(.*) /xxx/$1 かなあ。 あとは、逆転の発想で、xxxの中と外を入れ替えませす。具体的には、 public_html/secret/ というディレクトリを作り、現在public_htmlの下にあるウエブから見せたくないファイルをこの下に移動し、 public_html/xxx/ の下のファイル群を全部 public_htmlの直下に移します。 その後、public_html/secret/.htaccessに <Files "*"> deny from all </Files> を書くとそこのファイルはウェブから見えません。

nori_007
質問者

補足

ご返事が遅くなりました。 .htaccess ファイルに下記の記述を入れてみました。 RewriteEngine on RewriteRule /(.*) /xxx/$1 http://www.hoge.jp/ にアクセスしても、 http://www.hoge.jp/xxx/ のページは開きませんでした。 また、手動で xxx とアドレスを書き足した所 http://www.hoge.jp/xxx/ のページでは以下のエラーが表示されてしまいました。 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. ちなみに、.htaccess ファイルで RewriteEngine on RewriteRule /index.html /xxx/$1 と書き換え、 http://www.hoge.jp/index.html にアクセスしても、変化がありませんでした。 なんか残念に思います。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

ドキュメントルート自体は、システム全体の物なので、.htaccess では変更できるはずがありません。 ただ、おそらくあなたがドキュメントルートという言葉で言いたいことは違うことのような気がします。どう言うところに問題があって、それをどう解決したいのでしょうか?

nori_007
質問者

補足

アドバイスをありがとうございます。 指摘されれば、確かにドキュメントルートと言う表現は違ったかも知れません。ご指摘ありがとうございます。 行いたい事を記載します。 現在共有のレンタルサーバを借りています。レンタルサーバ会社の資料によると、html ファイルを公開するディレクトリは、/www/ となっています。フルパスは、/virtual/www/ になるそうです。 この状態で。 http://www.hoge.jp/ でアクセス出来ます。 ただ事情で、www 直下に html ファイルを置きたくありません。置きたくないと言うより、ファイルが散乱する為、/www/xxx/ と言うディレクトリを作成してファイルを置いています。ですので現在 http://www.hoge.jp/ でアクセスすると、 http://www.hoge.jp/xxx/ が表示出来るように、.htaccess ファイルで、リダイレクトしています。 .htaccess Redirect permanent /index.html http://www.hoge.jp/xxx/ としています。 この状態だと、 http://www.hoge.jp/ にアクセスすると、 http://www.hoge.jp/xxx/ に URL が変わってからページが表示します。 これを、リダイレクトで無く、 http://www.hoge.jp/ にアクセスしたら http://www.hoge.jp/xxx/ の内容が、 http://www.hoge.jp/ の URL のまま表示出来ればと思っています。 他の案として /www/ に index.html ファイルを置いて、/www/xxx/ 内のファイルにリンクする。 もしくは、/www/xxx/ のファイルを直接 /www/ に設置するになると思います。 .htaccess ファイルで実行出来ない場合は、上記の案を実行しますが、その前に、.htaccess で実行出来ないものか質問させて頂きました。

関連するQ&A

  • 現在のドキュメントルートを調べたい

    こんにちは。 Fedora Core6にて、現在のドキュメントルートを、GNOME端末上から 調べたいのですが、その方法はありますか? かなりありそうだと思うのですが、なかなか方法が見つかりません。 現在、他の人が使っていたサーバーの再設定を行っていて知りたいのです。 httpd.confで設定変更が行えるのは知っていますが、何か思うようにいかないので現在のドキュメントルートをパソコン自体に問い合わせしたいと思いました。 よろしくお願いします。

  • Linux Document Rootについて

    職場で、Linuxの経験が無いにも関わらず WEBサイトのサーバ移行をしていまして、躓きました。 新サーバはAWSにてCentOS 6.9 Apache 2.2.15 php 5.3.3となっています。 率直な質問ですが、Document Rootとは サイトのアドレスを叩いた時にそこのディレクトリの index.html(.php)が表示される場所という認識で 良いでしょうか? それが合っているのであれば、 httpd.conf内にてDocument Rootを/aaa/bbb/ccc/から /ddd/eee/fffに変えてやると、サイトのアドレスを 叩いた時に/ddd/eee/fff/の中にあるindex.html(.php)を 読みにいくという動作になるということでしょうか? .htaccessにてリダイレクトも考えましたが、 それも上手くいってません。 <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^/aaa/bbb/ccc/(.*)$ /ddd/eee/fff/$1 [R=301,L] </IfModule> これで合ってますでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • DocumeentRootを変更したいのですが、

    DocumeentRootを変更したいのですが、 レンタルサーバを利用している為、httpd.confを使用できません。 .htaccess等でシステム毎にドキュメントルートを変更できないでしょうか? http://aaa.jp → user/web/ddd/ http://bbb.jp → user/web/eee/ http://ccc.jp → user/web/fff/ という感じで設定できればと思っております。 よろしくお願いします。

  • OSXで.htaccess

    .htaccessを試しているんですが 置き場所は/Library/WebServer/Documents/.htaccess 自宅サーバに使っています htppd.confをいじくって Options -Indexesまでできるようになったんですが パスワード認証などを設置すると500エラーがでます ローカル192.168.1.17でもエラーがでます 記述は間違ってないと思います 他にも404のエラーページを出したりすると 500エラーがでます ディレクトリなどを書く.htaccessではエラーがでています Options -Indexesならちゃんと消えているんですが httpd.confのどこの設定を変えれば良いのでしょう教えてください!

  • apacheでドキュメントルート変更

    httpd.confを編集して # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "C:/www/jisaba" とドキュメントルートの変更を行ったのですが、 127.0.0.1とアドレス入力してもApacheのデフォルトのhtmlに飛んでしまうのです。 apacheをアンインストールして再インストールしてもapacheのhttpd.confの 設定は DocumentRoot "C:/www/jisaba" と以前の設定が残っています。 google検索などをしたのですが、 「OSを再インストールするのが一番早い」 みたいな事をかいてあります。 apacheってレジストリの変更までしてしまうのでしょうか? それとも、httpd.confの書き間違え? 原因がわかりません。前はディレクトリ変更は成功していたのですが…

  • ユーザ毎にドキュメントルート変更できますか

    今まで趣味で立ち上げてきたWebサーバを引退させ、コンテンツをレンタルサーバに移しました。 これまで http://引退サーバ/コンテンツ だったURLは http://レンタルサーバ/~アカウント名/コンテンツ になりました。 元々、 コンテンツ内の全ページは「ドキュメントルート/style/my.css」を使用していたり、 複数のページが共通の「ドキュメントルート/img/*.gif」を埋め込まれている のですが、これらを絶対パス指定してしまっていて、 引越し先では相対的にドキュメントルートが変わってしまったため、 cssや画像が読み込まれずに表示されてしまっている状態で困っています。 全ページのHTMLに書かれているパス指定を書き換えればよいのかも知れませんが、 ページ数が多過ぎて非現実的です。 htaccessに何か書くことで下位ディレクトリのドキュメントルートを ユーザのホームディレクトリに変換できないかと あちこち調べてみたのですが分かっておりません。 何かアドバイスを頂ければ幸いです。

    • 締切済み
    • CSS
  • Linux環境で、WEBサーバーのドキュメントルートを取得するには

    こんにちは、 サーバーソフトウェアのインストールを作っているのですが、WEBサーバーのドキュメントルートを取得するには、/etc/httpd/conf/httpd.confを直接読み込んで DOCUMENTROOTの行を探すのが良いのでしょうか? それとも、もっとスマートな方法が可能なのでしょうか? ご存知の方、いらっしゃいましたら、ご指導頂ければ幸いです。どうぞよろしくお願いいたします。

  • ドキュメントルートについて

    すいません、サーバーを借りた際のドキュメントルートについてなんですが、ドキュメントルートとは同一ドメインサーバ内の公開エリアでの最上位階層のこと。ということらしいんですが、このドキュメントルートがサーバによってpublic_htmlやhtdocsの場合があるんですが、これは、 ドキュメントルート=public_html=htdocs と考えて良いんでしょうか?   また、ROOT_PATHというのは各サイトの最上位階層のディレクトリ(各サイトのindex.htmlが入っている)のことで良いんですよね? 宜しくお願いします。

  • .htaccessでの認証について

    apacheでの「.htaccess」認証の質問です。 よろしくお願い致します。 OS:RedHat9 WWWサーバ:Apache 2.0.40 ###httpd.conf### <Directory "ドキュメントルート">内の AllowOverride none ↓変更 AllowOverride AuthConfig ################## ドキュメントルートにて Apacheグループユーザにより 「.htpasswd」の実行 /usr/bin/htpasswd -c ".htpasswdの場所" ユーザ名 Apacheグループユーザにより 「.htaccess」を作成 ###.htaccess### AuthUserFile ".htpasswdの絶対パス" AuthGroupFile /dev/null AuthName "Please Your Password" AuthType Basic require valid-user ################# apacheの再起動 以上を実施しました。 index.htmlにACCESSすると パスワード要求がくるのですが、 認証してくれません。(Error 401) 「.htpasswd」を(moreで)確認すると ユーザ名:暗号化したパスワード となっており問題ないかのようにみえます。 htaccessまたはhttpd.confの設定がまずいのでしょうか? 初心者の質問で申し訳ないのですが よろしくお願い致します。

  • htaccessによるアクセス制限で表示速度が遅くなってしまう原因について

    初めて質問させていただきます。 失礼がございましたらご容赦ください。 現在、お客様のHP、システムがレンタルサーバ上に設置されています。 システムへのアクセス制限をかけようとしているのですが以下のような 問題が出ています。 原因が分からず困っております。 原因、解決方法をご教示いただけますと幸いです。 ■現象  システムを設置しているURLに対し、お客様のIPアドレスからのみアクセスできるように  httpd.conf、htaccessに記載したつもりなのですが、お客様社内からのアクセスができ、  他からのアクセスは制限できましたが、表示速度が非常に遅くなってしまいました。  同じくhtaccessに自社のIPアドレスを記載して試したところ、自社からのアクセスは特に問題ありませんでした。  どうやらお客様のIPアドレスからのアクセスのみ非常に遅くなってしまうようなのです。  (お客様のネットワーク関係の設定等との弊害でしょうか?)  ※htaccessにはドメインでの記載ではなく、IPアドレスを直接記載しています。 ■httpd.confとhtaccessへの記載内容  1)httpd.conf   <Directory "制限をかけたいディレクトリ">    AllowOverride Options Limit   </Directory>  2)htaccess   order deny,allow   deny from all   allow from お客様のIPアドレス 考えられる原因、解決方法等を教えていただけますと幸いです。 よろしくお願い致します。