プロが教える店舗&オフィスのセキュリティ対策術

mod_rewriteで書き換えに挑戦しているのですが、うまく動いてくれません。

やりたいことは、
http://www.example.com/ 以下をすべて
http://www.example.com/index.php
に書き換えたい。

開発中は直接 httpd.conf を編集できるため

RewriteEngine on
RewriteRule ^/((?!css|js|img).*)$ /index.php?&%{QUERY_STRING} [L]

上記で問題なく動いているのですが、htaccessではinternal errorかACCESS forbidden, object notfound などでうまく以後来ません。

ためしに、
RewriteRule aaa index.php?&%{QUERY_STRING} [L]
として、http://www.example.com/aaa にアクセスしても object notfound が返ってきます。

^aaa としたり ^aaa$ としたり、いろいろ試してるのですが全滅・・・

検索して見つかったサンプルなどをそのままコピーしても使えません。

ちなみに、開発環境では Apache2.2.4。 公開用では 1.3系 の予定です。
Apache2.2.4 の httpd.conf ではOK。htaccess ではOUT。
難しい・・・

A 回答 (1件)

こんにちわ。



.htaccess自体有効になっていますか?
apacheのconfに.htaccessを有効にする

AllowOverride ****
(***はオプション)

がないと.htaccess使えませんよ。

ご確認くださいませ。

参考URL:http://httpd.apache.org/docs/2.2/ja/mod/core.htm …

この回答への補足

la_pureさん、こんにちわ。
ご回答ありがとうございます。

確認しました。
開発環境のhttpd.conf に AllowOverride None になっており、htaccessが使えなくなっていました。とりあえずAll にするとうまく表示できるようになりました。

公開用のほうはXREA(mod_rewriteは利用できるレンサバ)なんですが、こちらだと開発環境でできたhtaccessをそのままアップしても 500 internal error になってしまいました。
Apacheのバージョンの違いによるものなのか、もう少し悩む必要があるようです。
とりあえず、一歩前に進めました。ありがとうございます。

補足日時:2007/08/10 10:59
    • good
    • 0
この回答へのお礼

なんとか解決できました。

開発環境のhteaccess では下記でうまくいったのですがXREAではうまくいきませんでした。
RewriteRule ((?!css|js|img).*) index.php?&%{QUERY_STRING} [L]

いろいろ試したところ、((?!css|js|img).*) この表現がダメだったようで、
そこで、それぞれわけて、
css/(.*) を css/$1 へ
js/(.*) を js/$1 へ
img/(.*) を img/$1 へ
(.*) を index.php へ
という具合にしてうまく動くようになりました。

いろいろ細かな違いや設定によりエラーがでるものですよね。勉強になりました。

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

お礼日時:2007/08/10 11:51

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