1

私は .htaccess の専門家ではありませんが、時間をかけてさまざまな投稿から機能するものを構築してきました。

このセクション

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ index.php?path=$1 [QSA,L]

すべてのページが index.php を通過します。それはうまくいきます。ただし、私の ajax ページの少なくとも 1 つが index.php を通過することを強制していますが、これは望ましくありません。この .htaccess コードを制限して、最初のサイト訪問時にのみ有効にし、ajax の読み込みを行わないようにする方法を知っている人はいますか?

ありがとう。

4

1 に答える 1

2

AJAX リクエストを通常のファイル (サイズ付き) に送信しないのはなぜですか? この方法では、%{REQUEST_FILENAME} !-s条件は失敗し、書き換えルールは使用されません。

それ以外の場合は、リクエストに共通の (ただし標準ではない) X-Requested-WithHTTP ヘッダーがある場合、これを試して書き換えをスキップできます。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{HTTP:X-Requested-With} !=XMLHttpRequest
RewriteRule ^(.*)$ index.php?path=$1 [QSA,L]

以下に分けて説明します...

ほとんどの JS ライブラリまたはブラウザー (正確には覚えていません) は、AJAX 要求を送信するときに、X-Requested-With値を含む HTTP ヘッダーを挿入しますXMLHttpRequest。HTTP ヘッダーをRewriteCond同様に使用%{HTTP:X-Requested-With} =XMLHttpRequestして、AJAX 要求を検出できます。Using!=は、リクエストが AJAX 経由ではないことを意味します。

于 2013-08-07T05:08:48.663 に答える