2012-04-22 2 views
1

$ _POST ['form']を提出すると、8または9分以上アイドル状態になるとタイムアウトエラーが発生します。それは常に変化します。これは私がエラーログに得たものである投稿フォームから無限ループを取得しています。それがhtaccessの問題であるかどうか分かりません

enter image description here

[Sat Apr 21 20:15:00 2012] [error] [client .......] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace. 

それは私のスクリプトすることはできませんこれは、エラーのスクリーンショットです。これはかなり標準的な形式です。また、共有ホスティングの6つのサイトすべてでこのエラーが発生しています。ここに私の.htaccessファイルがあります...

Options +FollowSymLinks 
    RewriteEngine On 

    Options -Multiviews 
    RewriteBase/

    RewriteRule ^([a-zA-Z0-9-]+/?)$ $1.php 

    #edit forum question -- questions.php 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^edit/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+) edit.php?question_num=$1&question=$2 [NC] 

    #edit forum question id -- questions.php 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^edit/([a-zA-Z0-9-]+) edit.php?question_num=$1 [NC] 

    #usernames -- index.php 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^([a-zA-Z0-9-]+) index.php?post=$1 [NC] 

問題はサイト全体のポストフォームにあります。送信するまで待つと、このタイムアウトエラーが発生します。

私はphp.iniの問題ではないと思います。私はほとんどすべてはそれでカバーしてきた:

register_globals = off 
allow_url_fopen = off 

expose_php = Off 
max_input_time = 18000 
max_execution_time = 18000 

;extension_dir = ./ 
upload_tmp_dir = ./tmp 

;precision = 12 

session.cache_expire = 10080 
session.cookie_lifetime = 200000 
session.gc_maxlifetime = 10000 

memory_limit = 100M 
post_max_size = 100M 
file_uploads = On 
upload_max_filesize = 192M 

.htaccessファイルをチェックアウトした後、あなたはこれを引き起こす可能性があります何のためにどのような理由を見ることができますか?それとも全く違うの?また、私はクッキーを使用しているとセッションデータがないことに注意する必要があります。

+0

*バックトレースを取得するには 'LogLevel debug'を使用してください。 "* - そのディレクティブをApacheの設定に追加して、どのリダイレクトが起きているかを確認します。 2)最初の書き換え後に処理を停止するように、 'L'フラグ(例えば' [NC、L] ')を含むようにルールを変更します。 3)おそらく、あなたのルールパターンに '$'を追加する必要があります。 – DCoder

答えて

2

あなたがそうでなければそれだけで無限にそれらを介してループし、あなたのhtaccessでLフラグを必要とする -

# Important L flag! 
RewriteRule ^([a-zA-Z0-9-]+/?)$ $1.php [L] 

#edit forum question -- questions.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^edit/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+) edit.php?question_num=$1&question=$2 [NC,L] 

#edit forum question id -- questions.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# Important $ dollar sign next line - otherwise it matches above rule 
RewriteRule ^edit/([a-zA-Z0-9-]+)$ edit.php?question_num=$1 [NC,L] 

#usernames -- index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z0-9-]+) index.php?post=$1 [NC,L] 

それはルールを書き換えると、(再び書き換え)書き換えた後、再び通ってループLなし。

+0

素晴らしい感謝!私はドル記号を使う理由について少し混乱しています。同じページに対して複数の書き換えルールがある場合はいつでも使用しますか?例えば/ question_num]/$ _ GET ['question'] – Graham

+0

あなたの書き込みには正規表現があり、$記号はその文字列がそこで終わることを示します。 '^/example'/exampleがあれば'/example/anything'となります - 最後にドル記号があれば、最初のものだけがマッチとしてパスします。 –

関連する問題