2017-12-14 15 views
1

get情報をフォーマットするには、以下の.htaccessがあります。HtaccessはPHPを2回実行するように強制します

.htaccessファイル:

RewriteCond %{HTTP_HOST} ^(www\.)?csbuilder\.io [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ index.php?params=$1 [NC,L] 

問題は、私はこのルールを適用すると、それは二回PHPスクリプトを実行し始めています! コードの1つが2回処理されているので、私はそれを理解しました。

このスクリプトはランダムなトークンをデータベースに設定し、ページをリロードするたびにデータベースに別のトークンが表示され、ブラウザに送信されます。

.htaccessルールを削除しても正常に動作します。

アイデア?

既存のルールがすべてをmatchs:解決


。画像が壊れた場合は、それが一致し、index.phpを実行します。

画像やその他のファイルを一致させる必要はありません。正規表現をフォローするように変更して、この問題を解決しました。

RewriteRule ^([\w-/])+$ index.php?params=$1 [NC,L] 

ありがとう。

+2

達成しようとしていることは何ですか?もし '.htaccess'を削除すると*うまく動作するようになると、私は答えるのが嫌です:' .htaccess'を削除するだけです。 –

+4

このルールだけでは、1回のリクエストにつき2回、 'index.php'を実行しません。何が起こっているのか 'index.php'は、ブラウザが' index.php'を起動する別のリクエストをサーバに送信させるリソースリンク(例えばJavascript、CSS、images)を出力します。 – bishop

+0

私は存在しないイメージファイルを持っていたので、index.phpを通してそれを実行していました。 .htaccessを変更して、画像ではない要求を確認します。ありがとう – Simon

答えて

2

すべてが、index.phpを通じてルーティングエンジンの多くの一般的なパターンを行くように書き直されているので、あなたが異なるパスのために複数の実行を参照してくださいので、あなたのアクセスログに非常に細心の注意を払うことがあります。ここで最も一般的な犯罪者は、プロンプトなしで/favicon.icoを要求するブラウザです。

+1

私はイメージファイルを持っていませんでした。それはindex.phpを通して実行していました。 .htaccessを変更して、画像ではない要求を確認します。ありがとう – Simon

+0

ええ、 '\。(gif | png | jpe?g | ico)'で一般的な画像拡張子を無視することができます。 – tadman

+1

欠落している画像をある種の欠けている画像プレースホルダ、または単一のピクセル画像にルーティングすることを考慮する必要があります。これにより、誤って壊れた ''タグのHTMLを提供するという共通の問題を回避できます。 – tadman

関連する問題