こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

[Apache] サブディレクトリに.htaccessをおいた場合

Apacheの.htaccessについての質問です。
webにて可能な限り検索してみたのですが、該当する記事がありませんでした。
よろしくお願いします。

【環境】
 ・windows xp sp2
 ・xampp(apache 2)

【httpd.confの設定】
DocumentRoot "J:\foo"
<Directory "J:\foo">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>

※)Jドライブは外付けHDDです。

【現象】
1.DocumentRootの「J:\foo」に.htaccessを設置した場合
  1)http://localhost/でアクセス
    →機能します
  2)http://localhost/ver/でアクセス
    →機能します

  ※)DocumentRootに.htaccessを設置した場合、通常の動作になる。
    (サブディレクトリにもDocumentRootに設置した.htaccessの設定が有効になる)

2.「J:\foo\ver」に.htaccessを設置した場合(DocumentRootの.htaccessは除去)
  1)http://localhost/ver/でアクセス
    →機能しません

「2」を機能させたいのですが、どのような設定が必要なのでしょうか。

尚、念の為.htaccessの内容を以下に記します。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.html [L,QSA]

この.htaccessについてはレンタルサーバ上で動作確認済みである為、おそらくはhttpd.confの設定かと考えています。
または外部HDDにDocumentRootを設定しているのが問題かと・・・。


説明不足な点がございましたらご指摘頂けると幸いです。
以上、どうぞよろしくお願い致します。

投稿日時 - 2009-09-24 16:41:18

QNo.5315404

すぐに回答ほしいです

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

xamppは、昔入れてほったらかしてある環境なので、ざっと見た限りですが、httpd.confファイルに
 Global Evironment
 'Main' Server
の2つのセクションがありますが、整合性は大丈夫でしょうか?
(もし、最近のには/ダウンロードされたバージョンには、無いよってことでしたら、無視して下さい。)

投稿日時 - 2009-09-27 08:03:35

お礼

ご回答ありがとうございます。

自己解決しましたのでご報告させて頂きます。
原因は.htaccessにRewriteBaseを設定していなかったことでした。
RewriteBase /foo
を追加することで解決いたしました。

今回の.htaccessの設定では、存在しないリクエストを全てhttp://localhost/index.htmlにRewriteしようというものでした。
1.RewriteBaseを書かなかった場合
  →http://localhost/ver/aaaaa (存在しないURL)
   結果:404となる。(http://localhost/foo/index.htmlにrewriteしてしまう)

2.RewriteBaseを書いた場合
  →http://localhost/ver/aaaaa (存在しないURL)
   結果:http://localhost/index.htmlにrewriteされる

RewriteBaseでベースとなるURL(今回の場合は/foo)を教えてあげないといけないとのことでした。

皆さん、お手伝い頂きありがとうございました。
改めてお礼申し上げますm(_ _)m

投稿日時 - 2009-10-01 12:14:38

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

問題解決の切り分け提案ですが、参考URLのApacheのサイトにあるように、/varに一旦動作しない .htaccess を置いてみてエラーが出るか(=/var で問題なく .htaccess が動作する) を確認してみては如何でしょうか?

参考URL:http://httpd.apache.org/docs/2.2/ja/howto/htaccess.html#troubleshoot

投稿日時 - 2009-09-26 09:46:30

お礼

ご回答ありがとうございます。
1./var(DocumentRootでは無い、いかなるサブディレクトリ)にはどんな内容の.htaccessを置いても機能しません。
  →意図的なエラーを含む.htaccessを置いてもエラーを吐きません。
2.httpd.confのDocumentRootセクションにはAllowOverride Allと設定しています。
  →マニュアル通りに書いたつもりなのですが・・・
3.この.htaccessは別環境のサブディレクトリでは意図通りに機能します。
  →ただし、その別環境のhttpd.confは参照不可

以上のことから.htaccessの問題ではなく、httpd.confに問題があると考えています。
もしくは上記にも書きました通り、外部HDDにDocumentRootを設定しているので、アクセス権限絡みかなとも思い権限をALLフリーにしてみたりと試してみてはいるのですが・・・

重ねてお礼申し上げます。
ご協力ありがとうございますm(_ _)m

投稿日時 - 2009-09-26 23:08:26

ANo.1

"J:\foo"

"J:/foo"
でどうでしょう?

投稿日時 - 2009-09-25 11:21:04

お礼

ご回答ありがとうございましたm(_ _)m
ご指摘のパスに訂正してみましたが駄目でした。

投稿日時 - 2009-09-25 19:32:59

あなたにオススメの質問