2011-01-14 4 views
1

私のローカルのdevマシンに新しいReWriteルールを実装しようとしています。私は既に13のルールが設定されており、すべてがうまくいきます(この記事の時点でも)。しかし、何らかの理由で最新のものが500の内部サーバーエラーを投げています。Apache ReWriteEngineが内部リダイレクトが多すぎるために内部サーバーエラー500を投げる...なぜですか?

書き換えルールは次のとおりです、私は/ index.phpのを見るためにリダイレクトしようとしていますもの= $ 1スクリプトで

[Thu Jan 13 22:07:43 2011] [error] [client ::1] mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary., referer: http://localhost:8888/stuff/public_html/vault/mystuff/all/index.php?curr=7 

RewriteRule stuff/public_html/vault/mystuff/view/(.*) /stuff/public_html/vault/mystuff/view/index.php?stuff=$1 

RewriteRule stuff/public_html/vault/mystuff/view/(.*)/ /stuff/public_html/vault/mystuff/view/index.php?stuff=$1 

は私のApacheのログをチェックして、これを得ましたか。どんな種類のリダイレクトにもリモートで類似しているものはありません。私は次のようにある着陸スクリプトの先頭に呼び出されて、非常に、非常に基本的なセッションの検証、持っている:私は直接ページにアクセスしたとき

//Start session 
session_start(); 

//Check whether the session variable SESS_MEMBER_ID is present or not 
if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) { 
    header("location: ".$root_http.""); 
    exit(); 
} 

をしかし、それはそれが必要として機能し、そこにありますリダイレクトはありません。私の他のReWriteルールとそれに対応するランディングページは全く同じように設定されています。

これは私の心を吹いています。助けてください、お願いします!マルク・BIからの提案で

ははRewriteLogオンにし、この思い付いた:

:: 1 - - [/月/ 2011年13:23:00:09 --0500] [localhostの/ SID#807df8 (/)/ stuff/public_html/vault/data/rewrite/stuff/public_html/vault/mystuff/view/index.php -/stuff/public_html/vault/mystuff/view/index.php?stuff = index.php

:: 1 - - [2011年3月23日:00:09 - 0500] [localhost/sid#807df8] [rid#941b38// stuff/public_html/vault/mystuff/view/index.php?stuff = index.php - > uri =/stuff/public_html/vault/mystuff/view/index.php 、args = stuff = index.php

,125,164,

:: [1/13/Jan/2011:23:00:09-0500] [localhost/sid#807df8] [rid#941b38/initial/redir#10](3)[dir /ユーザー/ stepheng /開発/]パターン 'stuff/public_html/vault/mystuff/view /(.*)/'をuriに適用する/stuff/public_html/vault/mystuff/view/index.php '

:: [localhost/sid#807df8] [rid#941b38/initial/redir#10](1)[dir/Users/stepheng/Developmentごとに1 - - [13/1/2011:23:00:09 - /]内部リダイレクト/stuff/public_html/vault/mystuff/view/index.php [INTERNAL REDIRECT]

引数は?stuff = index.phpを送信しようとしているようですが、それは可能です。何か案は?リライトログの

答えて

2

ルールを宛先に一致させて書き換えますか?それはループするだろう。あなたは最後に停止処理書き換えルールを言うのフラグを追加する必要があります。

RewriteRule stuff/public_html/vault/mystuff/view/(.*)/ /stuff/public_html/vault/mystuff/view/index.php?stuff=$1 [L]

+1

をあなたは正しいです、と私はそれに気づきませんでした。私は、宛先の名前をindex2.phpに変更し、.htaccessを更新し、サーバを再起動しました。まだ一致しているので、 –

+0

を投げています。あなたは[L]を追加しましたか?または、mystuff/view/ –

+0

のインデックスをoutsiteに移動します。@Stephen - Marc Bの回答から書き直しログはどのように表示されますか? – jmort253

5

入れます:あなたのhttpd.confの

RewriteLog /path/to/rewritelog.file 
RewriteLogLevel 9 

。これは基本的には書き換えエンジンのすべてを記録し、URLがシステムを通過した正確なパスを見ることができ、無限ループのように見えるのはなぜですか?

0

私はそれでこのパスを持つ要求についてはよく分からない:/stuff/public_html/vault/mystuff/view - どこドキュメントルートポイントを行いますか?

フルApacheを投稿できますか?

その間、これを試してください - それはあなたが一度だけリダイレクトする必要がありますので、システムは、既存のファイルまたはディレクトリと一致した場合にリダイレクトを停止する:

RewriteEngine on 

RewriteCond %{REQUEST_URI} !-f 
RewriteCond %{REQUEST_URI} !-d 
RewriteRule stuff/public_html/vault/mystuff/view/(.*)/ /stuff/public_html/vault/mystuff/view/index.php?stuff=$1 [QSA,L] 
+0

ありがとうHorus。私のハードURL(index.php?stuff = ...)が実際に私のソフトURL(/ view/* /)とマッチして移動したことに気づいた後、すべてが動作するようになりました。どうもありがとう! –

関連する問題