Apache の mod_rewrite について


DocumentRoot の下にあるあるディレクトリ foo に .htaccess を作成し、 mod_rewrite を使って、
以下のようにして http://localhost/foo/* へのアクセスをすべて index.cgi/* に向けようと試みてみました。

RewriteEngine on
RewriteRule ^.*$ index.cgi/$1 [L]

しかしこうすると、 rewrite の無限ループになってしまい、うまくいきませんでした。
L フラグを設定してみましたが、ダメでした。
どうやったらうまく URL を書き変えられるでしょうか?

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2011/12/31 21:30:04

ベストアンサー

id:rouge_2008 No.1

回答回数595ベストアンサー獲得回数351

index.cgiはドキュメントルートにあるのですか?
その場合は以下で大丈夫だと思います。

RewriteEngine on
RewriteBase /foo
RewriteRule ^/?(.*)$ /index.cgi/$1 [R,L]


アドレス欄の表示を変えたくない(※リダイレクトさせない)場合は以下で・・・

RewriteEngine on
RewriteBase /foo
RewriteRule ^/?(.*)$ /index.cgi/$1 [L]
他1件のコメントを見る
id:rouge_2008

それでは次のようにしてみてください。

RewriteRule ^/?(index\.cgi)*$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.+)$ index.cgi/$1 [L]
2011/12/25 15:59:34
id:odiak

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

2011/12/25 16:32:39

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

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

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

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

回答リクエストを送信したユーザーはいません