2017-06-13 12 views
1

mod_rewriteルールを使用して、以下のシナリオを解決する必要があります。mod_rewriteルール:特定の単語を含むURLへの直接アクセスをブロックする方法はありますか?

http://www.example.com/page/ 
http://www.example.com/page/?jump2=24&autoplay=1#anchor 

しかし、もし:私のウェブサイトの訪問者はこのパスをたどる場合

その後、最初のページを訪問した後、彼/彼女は、第2(よりフォーマットされた)URLを訪問することができるはずです(下記参照)訪問者はまっすぐにフォーマットされたURLに来る、それがブロックされる必要があります。

http://www.example.com/page/?jump2=24&autoplay=1#anchor 

はどうすれば.htaccessファイルを使用して、これをやって行くのですか?私はこれらのような数多くのURLを持っているので、フォーマットされたページやボットにつながる検索エンジンをブロックする必要があります。文字通り自分のサーバーを殺してしまいます。

答えて

1

HTTPはステートレスなので、これは単純な問題ではありません使用します。あなたは基本的に何らかの方法でそれをすり抜かなければならないので、単純なドロップインソリューションはなく、他の答えで提案されているようなクッキーを持つことは合理的なアプローチ(セッションクッキーなど)です。あなたがクッキーを除外しているなら、それは多くのオプションを減らします。しかし...

ページにトークンを生成し、そのトークンがURLで確認できます。トークンは日付に基づいているので、定期的に変更され、おそらく今日と昨日のトークンのみが許可されます。トークンがパラメータに存在しない場合、要求は拒否されます。 RewriteMapを使用して、.htaccessから現在のトークンを入手することができます。

もう1つの選択肢は、不正なボットがで正確にブロックできることです。は、robots.txtを無視するためです。したがって、すべてのページからリンクされ、CSSに隠されたボット・トラップ・スクリプトを設定し、訪問時にそのスクリプト(ファイアウォールからのブロック)から即座にIPをブロックすることができます。トラップはrobots.txtで除外されています。

それはそうrobots.txt乱用者は、(robots.txtのを禁止するURLの開始を指定するので、完全なURLではなく)あなたはrobots.txthttp://www.example.com/page/?のようなものを置くことができ、即座に禁止しても、あなたの中に正規のURLを設定します、場所になったらページ。他の検索エンジンオプションも便利になります。あなたが嫌うロボットをブロックすることができます。robots.txtを尊重し、これらの表示パラメータを無視するようにGoogle Search Consoleを設定します。

+0

私が望んでいたものではありませんが、それ以外の方法がない場合は、クッキーを使ってどうやってやりますか? – jjj

+0

あなたはSreedevの答えに示唆されたソリューションを使用することができます。 – SuperDuperApps

1

Cookieを使用して、ユーザーが既にページにアクセスしたかどうかを確認できます。

クエリ文字列がない場合は、インデックスページにCookieを作成します。次に、ユーザーがクエリ文字列でページを要求したときに設定されているかどうかを確認します。検索エンジンからURLをブロックするための

robots.txt

+0

まず、robots.txtは特定のパターンのページのクロールを防ぐために何もしません。ほとんどのサードパーティのロボットはそれを完全に無視します。そして、クッキーは、私が本当に探している解決策ではありません。しかし、試してくれてありがとう。 – jjj

関連する問題