- 締切済み
Apacheの.htaccessにおけるルート
apacheの学習中です。 Apacheで、ユーザーディレクトリを有効にしました。 ユーザーディレクトリ内で、 <a href="/">トップページへ</a> とすると、きちんと各ユーザーディレクトリのトップページへいくことを確認しました。 しかし、.htaccess内で ErrorDocument 404 /error/file_not_found.html とし、エラードキュメントを変更しようとすると、エラーページが正しく表示されませんでした。ログを見ると、以下のようになっていました。 File does not exist: /var/www/error/file_not_found.html どうやら、htaccessにおいてのルートディレクトリ指定が、各ユーザー個別のルートディレクトリになっていないようです。htaccessの/を各ユーザーのルートディレクトリに指定するには、どのように設定すればよいでしょうか? 現在、ユーザーディレクトリは以下のように設定しています。すいません。学習中なので、設定におかしなところがあるかもしれません。 <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Indexes Limit Options MultiViews FollowSymLinks IncludesNoExec <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> 原因が分かる方がいらっしゃれば、ご指摘くださると嬉しいです。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- wingstar
- ベストアンサー率37% (102/275)
>> そして、.htaccessはどこに置いて、どのような記述してあるのですか? >ユーザーのホームディレクトリです。 え? /home/ユーザ名/ですか? /home/ユーザ名/public_html/ではないのですか??? >>そもそも、各ユーザーのドキュメントルート(UserDir public_html)は設定されていますか? >こちらですが、実は単純にUserDir public_htmlを設定すると問題が起こったため >http://okwave.jp/qa/q6912728.html えっ、えっ? 意味がわからないのですが、バーチャルホストで設定して、www.example.comでもアクセスできるようにするけど、www.example.com/~ユーザ名でもアクセスできるようにするってことですか? バーチャルホストのドメインと、~ユーザ名のドメインは同一ですか?別物ですか? IPアドレスでアクセスしてきた場合は、どうなりますか? なんか、根本的に間違ってませんかね? あっ、いや、できますけどね。 でも、なんかUserDir public_htmlではダメな理由って、バーチャルホストなどの設定も影響してませんかね? UserDirの問題の件も含めて、一度整理した方が良いと思いますが、一体httpd.confの中やドメイン、ユーザーの関連などの設計はどうなっているのでしょう… この辺は、ここで明かすのはマズイと思いますので、ご本人が頑張って設計しなければならないと思いますが、本当に一度整理した方が良いと思います。 すみません。 自分にはよくわからないです。 一体、何を目指しているのか、イマイチわかりません。 ごめんなさい… でも、今回の質問の答えは、.htaccessを/home/ユーザ名/public_html/に置けば良いでいけると思います。 一応、AllowOverride FileInfo AuthConfig Indexes Limitも設定されていることですし。
- wingstar
- ベストアンサー率37% (102/275)
何度か読み直しましたが、よくわかりません。書いてあることが… > 現在、ユーザーディレクトリは以下のように設定しています。 その設定は、どこのファイルに記載しているのですか? そして、.htaccessはどこに置いて、どのような記述してあるのですか? 確認方法はWebブラウザーでURLを叩いていると思いますが、どのようなURLを入力していますか? そもそも、各ユーザーのドキュメントルート(UserDir public_html)は設定されていますか? っていうか、Apacheに関する情報全部開示して下さい… あと、Linuxはどのディストリビューションでバージョンがいくつとか…
補足
すいません。情報が不足していました。 >その設定は、どこのファイルに記載しているのですか? /etc/httpd/conf/httpd.confです。 >そして、.htaccessはどこに置いて、どのような記述してあるのですか? ユーザーのホームディレクトリです。 記述内容は ----- DirectoryIndex index.xhtml index.php index.html AddType "application/xhtml+xml; charset=utf-8" .xhtml ErrorDocument 404 /error/file_not_found.xhtml ----- です。(質問ではfile_not_found.htmlとしましたが実際にはxhtmlを使用してます。) >確認、方法はWebブラウザーでURLを叩いていると思いますが、どのようなURLを入力していますか? ユーザーに設定した(つもり)のアドレスを入力しています。/etc/httpd/conf/httpd.confにバーチャルホストとして以下のように記述し --- <VirtualHost *:80> DocumentRoot "/home/ユーザー名/public_html" ServerName www.example.com ServerAlias example.com *.example.com </VirtualHost> ---- 上記、example.comには実際には個人で取得したアドレスを設定しており、Webブラウザーから確認する場合はhttp://www.example.comを入力しています。また、この時きちんとユーザーディレクトリに入れているindex.htmlが表示される事を確認しました。 >そもそも、各ユーザーのドキュメントルート(UserDir public_html)は設定されていますか? こちらですが、実は単純にUserDir public_htmlを設定すると問題が起こったため http://oshiete.goo.ne.jp/qa/6912728.html <IfModule mod_userdir.c> UserDir public_html </IfModule> ではなく <IfModule mod_userdir.c> UserDir /home/*/public_html </IfModule> と設定しています。 >あと、Linuxはどのディストリビューションでバージョンがいくつとか… CentOS 5です。Apacheは2.2です。
補足
あぁ……。すみません。間違えました。ユーザーのホームディレクトリではなく/home/ユーザ名/public_html/にhtaccessファイルを置いているのですが、うまく行かないのです……。 そうなのですか。各個別ユーザーのホームディレクトリに置いたpublic_htmlにバーチャルドメインを設定するのは一般的かと思っていたのですがそうではないのですね……。 勉強し直します。ありがとうございました。