アプリ版:「スタンプのみでお礼する」機能のリリースについて

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を設定しているのが問題かと・・・。


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

A 回答 (3件)

xamppは、昔入れてほったらかしてある環境なので、ざっと見た限りですが、httpd.confファイルに


 Global Evironment
 'Main' Server
の2つのセクションがありますが、整合性は大丈夫でしょうか?
(もし、最近のには/ダウンロードされたバージョンには、無いよってことでしたら、無視して下さい。)
    • good
    • 0
この回答へのお礼

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

自己解決しましたのでご報告させて頂きます。
原因は.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

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



参考URL:http://httpd.apache.org/docs/2.2/ja/howto/htacce …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
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

"J:\foo"



"J:/foo"
でどうでしょう?
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/09/25 19:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!