0

私のhtaccessファイルには次のものがあります:

RewriteEngine On
RewriteRule ^(.*)$ rewrite.php?data=$1 [L,QSA]

rewrite.php から、URL に応じて正しいページにリダイレクトします。問題は、css と js を含むすべてのファイルをリダイレクトすることです。私はこれらのファイルを含めようとしましたが、今ではそれが私のばかげたことであることに気付きました。URL に適切な拡張子がある場合、リダイレクトする必要がありますか? リダイレクトが最善の方法である場合、どの方法が最適でしょうか? ヘッダーの場所または HTTP_redirect?

それとも、これは賢明なパフォーマンスや作業に関係する良いアイデアではありませんか? 私はこのようなものに行くことができましたが、私はApacheについてほとんど何も知らないので、今はApacheを使用したくありません.

RewriteRule ^(.*).css$ /includes/compressor.php?i=$1.css [L]

以前は、htaccess ファイルに次のものがありました。

RewriteCond %{REQUEST_FILENAME} !-f

これを削除することにした理由は次のとおりです。

  1. ヘッダーやその他の共通ファイルを rewrite.php ファイルに含めることはできません。また、リライト ファイルに、含めるページを決定し、ページ コンテンツのデータを再利用するためのデータベース呼び出しを含めることもできません。

  2. 外部アプリのみが使用するサービスなど、不要なファイルにアクセスできます。

4

2 に答える 2

2

圧縮は、すべてのリクエストに対してではなく、一度だけ実行する必要があります。対応するファイルが存在する場合は、URL 書き換えからリクエストを除外できます。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ rewrite.php?data=$1 [L,QSA]
于 2012-10-15T23:26:51.213 に答える
1

要求されたファイルがサーバーに存在しない場合にのみリダイレクトするのはどうですか?

これを実現するには、次の書き換え条件を使用できます。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*)$ rewrite.php?data=$1 [L,QSA]

そのため、要求がサーバー上に既に存在する CSS/JS/HTML/Image ファイルに対するものである場合、書き換えは行われず、ファイルに対する要求は処理されます。ファイルが存在しない場合、rewrite.php に対して書き換えルールが実行されます。

于 2012-10-15T23:26:42.817 に答える