Apacheのmod_rewriteについての質問です。

環境はApache2.2でWindowsです。

httpd.conf-----

<Directory />
Options All
AllowOverride All
</Directory>

LoadModule rewrite_module modules/mod_rewrite.so

sample/.htaccess------

RewriteEngine on
RewriteBase /sample/
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.html

このように設定し、Apacheの再起動を行って
http://~/sample/abcdefg
にアクセスすれば
http://~/sample/index.html
に転送されると思っていたのですが
「404 Not Found ~ sample/abcdefg was not found on this server」
となります。

おそらくRewriteされていないと思われます。
これは何が原因なのでしょうか?(参考書のとおりにやったつもりですが…)
何か他に設定すべきこと、~があやしいといったことがありましたら、ぜひ教えてください。

Googleで探してみたんですがUnix系ばかりで、今回のこの事象と関係があるのかわかりません…
http://d.hatena.ne.jp/omizu/20070911/p1
http://memo.officebrook.net/20060320.html

よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2008/07/13 03:42:05
  • 終了:2008/07/14 00:55:27

回答(4件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012008/07/13 05:41:42

ポイント23pt

RewriteBase /sample

最後のスラッシュが不要なだけだと思うのだけど?

id:jun09

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

スラッシュを変えても変わりませんでした…

2008/07/14 00:48:53
id:easygoings No.2

easygoings回答回数153ベストアンサー獲得回数202008/07/13 05:59:52

ポイント23pt

基本的には、.htaccessやhttpd.confの書き方は、OSによって違いはありません。

 

何をしたいのか、詳しいことがいまいちサンプルでは良く分らないのですが・・・

 

次の内容で、お望みのことはできるかと。

.htaccessファイル自体は、webルートディレクトリに

配置してください。(xampp等をお使いなら、\htdocsかな。)

 

.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /sample/
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.html [L]
</IfModule>

 

設定している内容は、sampleディレクトリ以下のファイル名をindex.htmlに

書き換えます。リダイレクトするわけではないので、ブラウザに表示される

URLはそのままです。

 

拡張子によって動作を変えたいようですが、ファイルが存在した場合、例え

ば、sample/test.jpegなどのファイルが存在した場合には、そのファイルが

表示されます。

ご参考になれば。

id:jun09

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

教えていただいた方法でも試しましたが、とくに変わらず…

htaccessの設定というより、そもそもRewriteできていないと思うんです。

httpd.confの設定がおかしいのでしょうか…

2008/07/13 12:55:07
id:heekun No.3

heekun回答回数11ベストアンサー獲得回数02008/07/13 10:44:20

ポイント22pt

拡張子!拡張子!

id:jun09

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

すいません、どういう意味でしょうか…?

2008/07/13 12:56:06
id:easygoings No.4

easygoings回答回数153ベストアンサー獲得回数202008/07/13 14:45:12

ポイント22pt

2です。

 

apacheのインストールの仕方が判りませんが・・・

ドキュメントルートを"C:/xampp/htdocs"として、

httpd.conf

DocumentRoot "C:/xampp/htdocs"
・・・中略・・・
<Directory "C:/xampp/htdocs">
    Options All
    AllowOverride All
</Directory>

 

でも駄目ですか?

 

よくある失敗として、そもそも、apacheの読み込むhttpd.confじゃない

ファイルを編集していたってこともよくありますが・・・

 

その辺、切り分けできてますか??

id:jun09

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

教えていただいたソースをコピペしても駄目で、何でだろう…とじっくりhttpd.confを見ていたら…

<Directory />

Options All

AllowOverride All

</Directory>

の下の方に

<Directory "C:/Program Files~/htdocs">

Options Indexes FollowSymLinks

Allow Override None

</Directory>

がありました。なんてこったい…

すみません。お騒がせしましたが何とか解決です。

ありがとうございました。

2008/07/14 00:54:04

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません