環境は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
よろしくお願いいたします。
基本的には、.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などのファイルが存在した場合には、そのファイルが
表示されます。
ご参考になれば。
ご回答ありがとうございます。
教えていただいた方法でも試しましたが、とくに変わらず…
htaccessの設定というより、そもそもRewriteできていないと思うんです。
httpd.confの設定がおかしいのでしょうか…
2です。
apacheのインストールの仕方が判りませんが・・・
ドキュメントルートを"C:/xampp/htdocs"として、
httpd.conf
DocumentRoot "C:/xampp/htdocs" ・・・中略・・・ <Directory "C:/xampp/htdocs"> Options All AllowOverride All </Directory>
でも駄目ですか?
よくある失敗として、そもそも、apacheの読み込むhttpd.confじゃない
ファイルを編集していたってこともよくありますが・・・
その辺、切り分けできてますか??
ご回答ありがとうございます。
教えていただいたソースをコピペしても駄目で、何でだろう…とじっくりhttpd.confを見ていたら…
<Directory />
Options All
AllowOverride All
</Directory>
の下の方に
<Directory "C:/Program Files~/htdocs">
Options Indexes FollowSymLinks
Allow Override None
</Directory>
がありました。なんてこったい…
すみません。お騒がせしましたが何とか解決です。
ありがとうございました。
ご回答ありがとうございます。
スラッシュを変えても変わりませんでした…