-2

サフィックスプロキシをインストールし、ワイルドカードサブドメインDNSを使用して次の書き換えを使用しています。

location / {
     if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php last;
        break;
     }
}

私のサフィックスプロキシのURL形式は次のとおりです:(サブドメインおよび/またはドメイン+プロキシへのドメイン拡張子).proxy.org /(プロキシへのrequest-uri)

私のindex.phpにこのphpコードがあります:

if(preg_match('#([\w\.-]+)\.example\.com(.+)#', $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'], $match)) {
    header('Location: http://example.com/browse.php?u=http://'.$match[1].$match[2]);
    die;
}

しかし、拡張子が.phpのページをリクエストすると、404notfoundエラーが発生します。

http://www.php.net.proxy.org/docs.php - HTTP/1.1 404 Not Found
http://www.utexas.edu.proxy.org/learn/php/ex3.php - HTTP/1.1 404 Not Found

しかし、他のすべてが機能しています(index.phpも機能しています):

http://php.net.proxy.org/index.php - HTTP/1.1 200 OK
http://www.php-scripts.com.proxy.org/php_diary/example2.php3 - HTTP/1.1 200 OK
http://www.utexas.edu.proxy.org/learn/php/ex3.phps - HTTP/1.1 200 OK
http://www.w3schools.com.proxy.org/html/default.asp - HTTP/1.1 200 OK

誰かが答えを持っていますか?なぜ動作しないのかわかりませんが、apacheでは正常に動作しています。

前もって感謝します。

4

1 に答える 1

3

元のリクエストの処理があるため、これが機能しなかったレイヤーがいくつかあります。また、リダイレクトヘッダーを発行した後に続く2番目のリクエストもあります。

PHPにデバッグステートメントを配置して、「if」ステートメントの前、「if」ステートメント内、およびその後のURLを確認できます。'php'スクリプトのリクエストがこのスクリプトに入っているかどうか、そしてどこまで進んでいるかはすぐにわかります。

次に、 browse.phpへの2番目のリクエストのログには何が表示されますか?到着するリクエストは正しく形成されていますか?

最後に、貼り付けた応答コードは、リダイレクトトレイルを表示しないため、完全なストーリーを伝えていません。PerlのLWPディストリビューションに含まれている「HEAD」のようなツールを使用してください。(多くのOS用にパッケージ化されています)。次に、元のリクエストとリダイレクトリクエストの両方、およびそれぞれに個別のレスポンスコードが表示されます。google.comがwww.google.comにリダイレクトする方法を示す例を次に示します。

$ HEAD -sSe 'http://google.com'
HEAD http://google.com
301 Moved Permanently
Cache-Control: public, max-age=2592000
Connection: close
Date: Thu, 21 Jun 2012 20:34:38 GMT
Location: http://www.google.com/
Server: gws
Content-Length: 219
Content-Type: text/html; charset=UTF-8
Expires: Sat, 21 Jul 2012 20:34:38 GMT
Client-Date: Thu, 21 Jun 2012 20:34:29 GMT
Client-Peer: 74.125.225.104:80
Client-Response-Num: 1
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block

HEAD http://www.google.com/
200 OK
Cache-Control: private, max-age=0
Connection: close
Date: Thu, 21 Jun 2012 20:34:38 GMT
Server: gws
Content-Type: text/html; charset=ISO-8859-1
Expires: -1
Client-Date: Thu, 21 Jun 2012 20:34:29 GMT
Client-Peer: 74.125.225.208:80
Client-Response-Num: 1
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Set-Cookie: PREF=ID=3d125e353127a33a:FF=0:TM=1340310878:LM=1340310878:S=D64LXQ4HKALmBZ_c; expires=Sat, 21-Jun-2014 20:34:38 GMT; path=/; domain=.google.com
Set-Cookie: NID=61=jEiVUOmNI_XWhc78fdGMXmZVfOK-j-7S1njjY9xedBR8CIZAy0pKgAtsiIzO4MLnvFKCJ_gUm4Zx-7TKl3gmHPrEzaWbSAB52LPgZlXoFdzJb7RW_wx-UGjQRCLag0Lt; expires=Fri, 21-Dec-2012 20:34:38 GMT; path=/; domain=.google.com; HttpOnly
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block

または、Chromium/Google-Chromeに組み込まれているデベロッパーツールを使用することもできます。それを開き、[ネットワーク]タブを選択して、google.comを読み込みます。「301」リクエストの後に「200」リクエストが表示されます。左側の名前をクリックすると、それぞれの完全な要求/応答ヘッダーが表示されます。

最後に、このサイトのQ&A形式に一致するように、質問の形式でタイトルを書き直すことを検討してください。

于 2012-06-21T20:41:40.857 に答える