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/24 21:26:18
  • 終了:2011/12/31 21:30:04

ベストアンサー

id:rouge_2008 No.1

rouge_2008回答回数594ベストアンサー獲得回数3512011/12/24 22:45:58

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

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

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

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

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

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