人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Apache の mod_rewrite について

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

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

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

●質問者: odiak
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● rouge_2008
ベストアンサー

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

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


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

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

odiakさんのコメント
すみません、説明不足でした。 index.cgiはfooの直下にあります。 その場合、 /foo/bar/ -> /foo/index.cgi/bar/ -> ... と無限ループに陥ってしまいます。

rouge_2008さんのコメント
それでは次のようにしてみてください。 >|| RewriteRule ^/?(index\.cgi)*$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/?(.+)$ index.cgi/$1 [L] ||<

odiakさんのコメント
できました。 ありがとうございます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ