10

私は2つの別々のvhostを持っています。wwwで。1つ、.htaccessにこの行のみをインストールしました

redirectMatch 301 ^(.*)$ http://d_blur_blur_s.com$1

POST が GET に変換される場合を除いて、すべてが期待どおりに機能します。
投稿にはパラメータが含まれていることに注意してください(私はそれをしていませんし、変更しません)。コンテンツの重複を避けようとしているだけです。firebug トレースを表示しています。

リダイレクトマッチまたはその他のトリックを使用して、POST がメイン ドメインにリダイレクトされることを期待しています。

火事の跡

更新
サイトの内部リンクの半分は www で書かれており、残りの半分はそれなしで書かれています。したがって、両方を公開しておく必要がありますが、複製することはできません。GET を GET として転送し、POST を POST として転送する必要があります。問題は大きく、12000 ページのインデックスがあり、フォームがたくさんあります。そのため、コードを変更せずに一般的なソリューションを最初に探しています。サーバーを完全に制御します。

どうもありがとう

4

6 に答える 6

7

投稿データを保持するために 301 の代わりに 307 を使用してリダイレクトしますが、ユーザーが投稿データを送信したいと確信している場合、一部のブラウザーはユーザーにダイアログを表示します。

しかし、問題を根本から解決したいと思います。間違ったドメインへの投稿を取得する唯一の方法は、html フォームが間違ったドメイン (例: <form action="www.d_blur_blur_s/public/main/loginGenerator.php" ...) を参照している場合です。htmlを修正するだけです。

検索エンジンはポスト リクエストを送信せず、取得のみを行うため、コンテンツの重複について心配する必要はありません。現在のソリューションでは、コンテンツの重複を防ぐためのトリックを実行する必要があります。

于 2012-05-16T18:08:15.693 に答える
7

POST または GET 要求に関係なく、作成した要求に対するサーバーからのリダイレクト応答は、常にクライアントが GET 要求を作成する結果になります (何らかの方法で自動的にリダイレクトに従わないようにしない限り、時々私は curl でこれを行います。しかし、この機能をユーザーが簡単に利用できる、広く使用されているブラウザーは知りません)。クライアント ブラウザは、リダイレクトによって提供された URL を受け取り、それを URL として扱い、GET 要求を実行します。元の URL のサーバー リソースを対象としていたため、POST データはサーバーによって破棄されます。

リダイレクト応答を作成するために PHP ファイルなどで .htaccess の外にリダイレクトする場合、唯一のオプションは、POST パラメータを GET パラメータの文字列に変換し、それをクライアントに送り返す URL の末尾に追加することです。応答をリダイレクトします。

mod_rewrite モジュールを介してリダイレクト ディレクティブまたは rewrite ディレクティブを使用するかどうかにかかわらず、.htaccess ファイルまたは httpd.conf ファイルでリダイレクトに自動 POST パラメータ追加を行う方法はないと確信しています。

于 2012-05-14T15:57:25.243 に答える
4

リダイレクトを実行して POST データを保持する唯一の方法(私が認識している)は、mod_proxy で mod_rewrite を使用Pし、RewriteRule でフラグを使用することです。

wwwホストで mod_rewrite、mod_rewrite、および .htaccessを有効にしてhttpd.confから、このコードを.htaccess以下のDOCUMENT_ROOTディレクトリに配置します。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^ http://d_blur_blur_s.com%{REQUEST_URI} [P]
于 2012-05-18T15:19:03.647 に答える
0

ベース URL に www を追加すると、うまくいきました。

于 2021-09-13T12:39:55.503 に答える