3

Apacheサーバーでいくつかのリダイレクトを設定しました。彼らは少しこのように見えます:

/ Name /register/login.htmlをリダイレクトします

私の質問はこれです...このリダイレクトを介してHTTPリファラーを保持する方法はありますか?デフォルトでは、Apacheは情報を破棄しているように見えます。リダイレクトが完了した後、リファラーが次のように言った場合、私は本当にそれを望んでいます:

http://the.orginalurl.com/Name/register

これが可能なら誰か?そうでない場合は、代替案について考えます。

どうもありがとう、ニール

4

5 に答える 5

6

Redirectブラウザには301と開く新しいアドレスが送信されるため、リファラーは保持されません。マニュアルから:

Redirectディレクティブは、クライアントに新しい場所でリソースを再フェッチするように要求することにより、古いURLを新しいURLにマップします。

mod_rewriteと(私が思うに) Aliasは直接(つまり、ブラウザーのリダイレクトを引き起こさずに)書き換えることができ、リファラーを保持します。mod_rewriteを使用すると、必要に応じて、リファラーをGETパラメーターとしてリクエストに追加することもできます。

于 2010-01-15T16:14:19.710 に答える
1

301リダイレクトを介してリファラーを転送する別の方法を作成しました。 https://webmasters.stackexchange.com/questions/4665/

于 2010-11-01T00:59:39.000 に答える
1

これはブラウザの問題であり、apacheではありません。あなたがそれについてできることはあまりありません。これは、特定のセキュリティ問題とリファラースパムを防ぐために行われます。

http://en.wikipedia.org/wiki/HTTP_referrer#Referrer_hiding

于 2010-01-15T16:14:48.853 に答える
1

リクエストの開始時にいつでも元のリファラーをパイプライン変数に格納し、代わりにそこからプルすることができます。

于 2010-01-15T16:16:33.340 に答える
0

ルールの書き方次第だと思います。指定したフラグに応じて、「リダイレクト」または「リライト」として機能します。

1.リダイレクト

302がブラウザに送信され、別のリクエストが開始されます(「永続化」オプションが有効になっているFirebugを参照)。

RewriteCond %{REQUEST_URI} !/index.html
RewriteRule ^(.*)$ /index.html [R=302,L]

2.書き直し

このようなヘッダーを送信しないため、ブラウザは302リダイレクトを開始しませんが、コンテンツをマスクします。

RewriteCond %{REQUEST_URI} !/index.html
RewriteRule ^(.*)$ /index.html [L]

このオプションでは、誰かが「page.html」にアクセスすると、「page.html」ではなく「index.html」のコンテンツが表示されますが、上記のURLには「page.html」が表示されます。

メンテナンスページなどに適しています...ログインページについてはよくわかりません...しかし、それは考えるべきもう1つのオプションです。

私の特定のケースでの「RewriteRule」と「Alias」の主な違いは、「Alias」ではなく、.htaccess内でリライトを設定できることです。したがって、常にAliasを使用できるとは限りません。

于 2014-05-04T08:31:59.677 に答える