0

ローカルマシンとテストサーバーでエラーなしで動作するWebサイトがあります。ただし、ライブサーバーのWebサイトに配置すると、406個のエラーがランダムに発生します。

たとえば、website.com /clothesまたはwebsite.com/clothes/tshirtsにアクセスすると、ページは正常に読み込まれ、画像はエラーなしで正しく表示されます。website.com/clothes/tshirts/bluepinnedに移動すると、製品画像(website.com/images/clothes/tshirts/bluepinned.jpg)の読み込みに失敗し、firebugで406エラーが発生します。ページをキャッシュリフレッシュ(CTRL + F5)すると、すべてのページリソース(スタイルシート、画像など)で406エラーが発生し、再度リフレッシュすると、サーバー全体がタイムアウトしたように見え、何も表示されません。ルーターを再起動すると(新しいIPアドレスを指定して)、サイトに再度アクセスできます。

URL:

website.com/clothes <- category showing all sub-categories and products (using product thumb image)
website.com/clothes/tshirts <- sub-category showing all products (using product thumb image)
website.com/clothes/tshirts/bluepinned <- individual product page (using large product image)

.htaccess:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(clothes)/([^/\.]+)/([^/\.]+)/?$ products.php?c=$1&sc=$2&p=$3 [NC,L,QSA] 
RewriteRule ^(clothes)/([^/\.]+)/?$ products.php?c=$1&sc=$2 [NC,L,QSA] 
RewriteRule ^(clothes)/?$ products.php?c=$1 [NC,L,QSA] 

phpinfoを確認しました-mod_securityが見つかりませんでした。ロードしているページには特別なことは何もありません-カテゴリ/サブカテゴリ/製品をロードするためのPHPクラス呼び出しを含む基本的なHTMLページ。Javascript、POST、AJAXはありません。

406を引き起こしている可能性のあるアイデアはありますか?

アップデート1:これはFirebug / Firefox(ホストとリファラーを削除)のヘッダー応答です:

Response Headers:
Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection  Keep-Alive
Content-Type    text/html
Date    Thu, 23 Aug 2012 05:36:54 GMT
Expires Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive  timeout=5, max=99
Pragma  no-cache
Server  Apache
Transfer-Encoding   chunked
X-Powered-By    PHP/5.2.17

Request Headers:
Accept  image/png,image/*;q=0.8,*/*;q=0.5
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection  keep-alive
Cookie  __utma=175298877.1838807483.1343995016.1345683454.1345698456.35; __utmz=175298877.1344487166.16.3.utmcsr=google.com|utmccn=(referral)|utmcmd=referral|utmcct=/imgres; __utmc=175298877; PHPSESSID=0d6664f0306618ac0f4218895efc4404; __utmb=175298877.2.10.1345698456
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1

アップデート2:Google Chromeのヘッダー応答:

Request Method:GET
Status Code:406 Not Acceptable

Request Headers
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:PHPSESSID=d5b28960a6d3e73c7db5a3808432ee71; __utma=175298877.1644911186.1345701704.1345701704.1345701704.1; __utmb=175298877.2.10.1345701704; __utmc=175298877; __utmz=175298877.1345701704.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1

Response Headers
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:Keep-Alive
Content-Type:text/html
Date:Thu, 23 Aug 2012 06:02:16 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=5, max=99
Pragma:no-cache
Server:Apache
Transfer-Encoding:chunked
X-Powered-By:PHP/5.2.17

更新3:ローカル応答を追加しました(機能します!)

Response Headers
Accept-Ranges   bytes
Connection  Keep-Alive
Content-Length  28212
Content-Type    image/jpeg
Date    Thu, 23 Aug 2012 05:58:31 GMT
Etag    "40000000cd15a-6e34-4c6eb29ada7fc"
Keep-Alive  timeout=5, max=77
Last-Modified   Fri, 10 Aug 2012 15:40:25 GMT
Server  Apache/2.2.21 (Win64) mod_ssl/2.2.21 OpenSSL/1.0.0d PHP/5.3.8

Request Headers
Accept  image/png,image/*;q=0.8,*/*;q=0.5
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection  keep-alive
Cookie  PHPSESSID=mjete8dhhn9abi9fkdfkce0kh2
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1

したがって、ファイルが.jpgの場合、image / *で許可されると思いますか?

4

1 に答える 1

-1

localpathREQUEST_URIの代わりに使用するか、書き換えルールに追加する必要がありますREQUEST_FILENAME

Apacheのドキュメントから:

REQUEST_URI

「/index.html」など、要求された URI のパス コンポーネント。これは特に、QUERY_STRING という名前の独自の変数として使用できるクエリ文字列を除外します。

REQUEST_FILENAME

REQUEST_FILENAME が参照された時点でサーバーによってすでに決定されている場合は、要求に一致するファイルまたはスクリプトへの完全なローカル ファイルシステム パス。それ以外の場合 (仮想ホスト コンテキストで使用される場合など)、REQUEST_URI と同じ値。

またLogLevel alert rewrite:trace3、何が置き換えられ、何が一致するかの明確な痕跡をチェックアウトします

于 2012-08-23T07:23:35.580 に答える