※ ChatGPTを利用し、要約された質問です(原文:Apache mod_rewriteが .htaccess ではうまく適用できない)
Apache mod_rewriteでのURL書き換えについて
このQ&Aのポイント
Apache mod_rewriteを使用してURLの書き換えを試みていますが、うまく動作しません。
開発環境では問題なく動作しているのに、.htaccessファイルでの書き換えではエラーが発生します。
様々な方法を試しましたが、どれもうまくいきません。開発環境と公開環境のバージョン差に注意が必要です。
Apache mod_rewriteが .htaccess ではうまく適用できない
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。
難しい・・・
お礼
なんとか解決できました。 開発環境の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 へ という具合にしてうまく動くようになりました。 いろいろ細かな違いや設定によりエラーがでるものですよね。勉強になりました。 ありがとうございました。
補足
la_pureさん、こんにちわ。 ご回答ありがとうございます。 確認しました。 開発環境のhttpd.conf に AllowOverride None になっており、htaccessが使えなくなっていました。とりあえずAll にするとうまく表示できるようになりました。 公開用のほうはXREA(mod_rewriteは利用できるレンサバ)なんですが、こちらだと開発環境でできたhtaccessをそのままアップしても 500 internal error になってしまいました。 Apacheのバージョンの違いによるものなのか、もう少し悩む必要があるようです。 とりあえず、一歩前に進めました。ありがとうございます。