• 締切済み

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> 原因が分かる方がいらっしゃれば、ご指摘くださると嬉しいです。 よろしくお願いいたします。

  • bease
  • お礼率56% (14/25)

みんなの回答

  • wingstar
  • ベストアンサー率37% (102/275)
回答No.2

>> そして、.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も設定されていることですし。

bease
質問者

補足

あぁ……。すみません。間違えました。ユーザーのホームディレクトリではなく/home/ユーザ名/public_html/にhtaccessファイルを置いているのですが、うまく行かないのです……。 そうなのですか。各個別ユーザーのホームディレクトリに置いたpublic_htmlにバーチャルドメインを設定するのは一般的かと思っていたのですがそうではないのですね……。 勉強し直します。ありがとうございました。

  • wingstar
  • ベストアンサー率37% (102/275)
回答No.1

何度か読み直しましたが、よくわかりません。書いてあることが… > 現在、ユーザーディレクトリは以下のように設定しています。 その設定は、どこのファイルに記載しているのですか? そして、.htaccessはどこに置いて、どのような記述してあるのですか? 確認方法はWebブラウザーでURLを叩いていると思いますが、どのようなURLを入力していますか? そもそも、各ユーザーのドキュメントルート(UserDir public_html)は設定されていますか? っていうか、Apacheに関する情報全部開示して下さい… あと、Linuxはどのディストリビューションでバージョンがいくつとか…

bease
質問者

補足

すいません。情報が不足していました。 >その設定は、どこのファイルに記載しているのですか? /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です。

関連するQ&A

  • Apache2の設定について。

    Solaris10にてApache2.0.52使っていて、ユーザルート上でCGIの許可をしているのにユーザルート上のCGIにアクセスしようとすると403エラーが発生してしまいます。 CGI-BIN以外の場所でCGIを使おうとする場合はエイリアスも設定しないといけないのでしょうか? 下に設定箇所も載せておきますので、確認よろしくおねがいします。 # Control access to UserDir directories. The following is an example # for a site where these directories are restricted to read-only. <Directory /export/home/*/public_html> AllowOverride None Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order deny,allow Allow from 192.168.80.0/24 Deny from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory>

  • apacheのユーザーディレクトリの設定

    Fedora Core6のapacheのユーザーディレクトリの設定で悩んでいます。 設定ファイル(httpd.conf)には以下のように記述しています。 #UserDir disable UserDir public_html <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> ユーザー登録をして/home/ユーザ名/にpublic_htmlフォルダを作成して、index.htmlページを作り、http://localhost/~ユーザー名/index.htmlにアクセスしましたが、「403 Forbidden」となってしまいます。 http://127.0.0.1/~ユーザー名/でアクセスしても「403 Forbidden」になります。 フォルダやファイルのパーミッションをいろいろと変えてみましたが表示されません。 こちらはLinux勉強中の初心者です。 よろしくお願いします。

  • Fedora Apache ユーザディレクトリの設定 /をつけないと表示されない!

    Fedora CoreのApacheでユーザディレクトリのコンテンツを公開するため、下記のように設定しました。 <IfModule mod_userdir.c> UserDir public_html </IfModule> <Directory /home/*/public_html> AllowOverride All Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> で、ばっちり見れるようになったんですが、下記のような問題が残っています。 http://ホストアドレス/~ユーザ名/ では正常に表示されるが、 http://ホストアドレス/~ユーザ名 のようにスラッシュを省略すると、表示されない。 ご存知の方おられましたらよろしくお願いしますー!

  • htaccessでのErrorDocumentが出来ない…

    初めての質問なので、おかしな所があったら突っ込んでやってくださいm(_ _)m サーバーはApacheの2.0.53を使っています。 OSはWindowsXPです。 htaccessのErrorDocumentを使って、エラーページに自分で作ったものを表示させようと思ったのですが、500の内部エラーがでてしまいました。 「ErrorDocument 404 /404.html(改行)」 という設定で、404.htmlファイルはhtaccessと同じディレクトリにおいてあります htaccess自体はホスト制限の order allow,deny allow from all deny from ---.---.--.-- 等の設定で動作してるのでhtaccessが使えないということは無いと思います。 Apacheのエラーログには ErrorDocument not allowed here と表示されていますが、いまいち理解ができなくて困っています。 何か手がかりだけでもいいので教えてもらえないでしょうか?お願いしますm(_ _)m

  • Apacheでのユーザーディレクトリ生成

    現在fedora core4 -Apache- でサーバー構築を勉強中なのですが、どうしても解決できない問題が出ました。それはユーザーディレクトリを生成した後、そのディレクトリにアクセスできないという問題です。 ユーザー[testuser]を追加し、/home/testuser/public_htmlを作成後 /home/testuser/public_html/index.htmlを作成、 httpd.confの設定を <IfModule mod_userdir.c> #UserDir disable UserDir /home/*/public_html/ </IfModule> # # Control access to UserDir directories. The following is an example # for a site where these directories are restricted to read-only. # #<Directory /home/*/public_html> # AllowOverride FileInfo AuthConfig Limit # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Directory /home/*/public_html> AllowOverride All Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> とし、ttp://www.testsrv.net/~testuserにアクセスしたところ、 You don't have permission to access /~user1 on this server. アクセス権が無いとはじかれました。 この場合、アクセスできるようにするにはどのようにすれば良いのでしょうか?

  • Redhat9のHTTPDでCGIがつかえない

    まずやりたい事はユーザーごとにWEBができるようにして、CGIをpublic_html以下のどこにでもCGIが使えるようにしたい思っています。 いろんなサイトを見てhttpd.confをいじってますが、どうしてもCGIを実行しても500エラーがでます。perlの場所はあっているんですが。 httpd.confのいじった所は、 <IfModule mod_userdir.c> UserDir public_html </IfModule> と <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> と ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"をコメントアウトしました。もしよろしければご指導のほどよろしくおねがいします。

  • Apache2でのバーチャルホストの設定について

    現在、メインのサーバhoge.ddo.jpにてApache2によるWebサーバを構築しています。 今回要望があり、ユーザのHPを別のドメインabc.dip.jpにバーチャルホストを利用して運営することになりました。 そこで質問なのですが、 http://abc.dip.jp/ にアクセスすることでユーザのHPにアクセスできます。しかし、 http://hoge.ddo.jp/~misa/ (misaはabc.dip.jpのHPを利用するユーザ) にアクセスしても同じ結果が得られてしまいます。 これを、 http://hoge.ddo.jp/~misa/ でアクセスした場合には、HPを表示できなくしたいのですが、このように設定することはできるのでしょうか? よろしくお願いします。 設定( /usr/local/etc/apache2/httpd.conf ) DocumentRoot "/usr/local/www/data" ServerName hoge.ddo.jp:80 <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS PROPFIND> Order deny,allow Deny from all </LimitExcept> </Directory> NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /usr/local/www/data ServerName hoge.ddo.jp </VirtualHost> <VirtualHost *:80> DocumentRoot /home/misa/public_html ServerName abc.dip.jp </VirtualHost> 環境 FreeBSD 5.4-Release-p2 Apache 2.0.54

  • Fedora Core1サーバーでCGIが利用できません

    Fedora Core1でwebサーバーを立てたのですが、実行しようとすると「500 Internal Server Error」となってCGIが動きません。 perlへのパスやパーミッションの設定も見直しましたが、どこの設定が間違っているか分からないので、設定方法を教えてもらえないでしょうか? 現在の環境は ホスト名:saba.dyndns.org perlのパス:/usr/local/bin/perl CGIを仕えるようにしたいユーザー:guest CGIを設置するディレクトリ:/home/guest/cgi-bin/ Apacheのバージョンは2.0.49 となっています。 また以下はhttpd.confの抜粋です。 Listen *:80 #ScriptAlias /cgi-bin/ "/var/www/html/" ScriptAlias /cgi-bin/ "/home/guest/public_html/cgi-bin/" AddHandler cgi-script .cgi .pl <Directory "/home/guest/public_html/"> Options ExecCGI AllowOverride None Allow from all Order allow,deny </Directory> <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options Includes ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> 長文失礼しました。

  • .htaccess の検索除けで、

    .htaccess の検索除けで、 CGIディレクトリをクロール巡回されたくないのです。 まずは、ルートにrobots.txtで、 User-agent: * Disallow: /cgi/ バイドゥが無視するらしいので、/cgi/内にも.htaccess で、 SetEnvIf User-Agent "Baidu" deny_ua SetEnvIf User-Agent "Baiduspider" deny_ua order allow,deny allow from all deny from env=deny_ua と書きました。こうで、バイドゥは排除できると思うのですが、 「バイドゥはダメですよ」と書いてあるのでしょうか? それとも 「他は許可するけどバイドゥはダメですよ」 と書いてあるのでしょうか? 頭が混乱して良く分からなくなりました。 バイドゥ以外のクローラーが、/cgi/に来ちゃいますか? 回答お願いします<(_ _)>

  • (apache2)htaccessの認証が動かない

    RedHat9.0使用、apache2は後からコンパイルして入れました。 .htaccessをおいたディレクトリをwebブラウザで参照しても、これまで通り、認証画面が表示されることもなく、画面が表示されてしまいます。 設定は以下のように行いました。 1.httpd.conf AllowOverride None → AllowOverride Limit AuthConfig apache2再起動 2.htpasswd -bc で.htpasswd ファイル作成 chmod 644 .htpasswd 3..htaccess設置 AutyType Basic AuthUserFile /home/.htpasswd AuthName "Members Only" require valid-user chmod 644 .htaccess ルートでもユーザのpublic_html内でもいろいろ試してみましたが、 .htaccessは無視されているように思えます。 httpd.confの設定のどこかがおかしいのではと思っていますが、いろいろ調べましたがよくわかりません。 調べるポイントだけでもアドバイスいただければ、助かります。 よろしくお願い致します。