RewriteBaseは重要

Pocket

超ハマッタ。
やっと解決。
解決の糸口となったブログ様に感謝。。。
RewriteBaseは重要です!
参考:http://d.hatena.ne.jp/hyshhryk/20080927/1222456320

スポンサードリンク


・・・と、なんかこれだけ書いてもなんだかなーという感じだったので、以下に詳細を書きます。
誰かの役に立てれば幸いです。
まぁ教えてgooで質問したんですけどね。
そこから引用します。

–引用ここから

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

【httpd.confの設定】
DocumentRoot “J:\foo”

Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all


※)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に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)を教えてあげないといけないとのことでした。

–引用ここまで


お役に立てましたか?

ブックマークをどうぞ!

スポンサード リンク

コメントを残す