特定のURLセットのみにアクセスWebサーバーをセットアップして制限する方法はありますか。 Webサーバーがwww.abc.com、www.abc.com/videos、www.abc.com/videos/vandor-1、www.abc.com/discussionfromにのみ応答するようにします。
Webサーバーにのみ応答させたい...
私はあなたが本当にそれをしたくないのではないかと疑っています-実際にあなたのウェブサーバーがリクエストでURLを見るまでに、それはすでにクライアントと会話しています(パケット交換を中断するのは実際にはかなり難しいです)。推測では、サーバーがこれらのURLに対して有効な応答を行い、他のURLに対してエラーで応答するようにしたいだけです。
解決策は簡単です-これらの仮想ホストと仮想ホスト内のこれらのパスのみを設定します。また、URLをネゴシエートするもの(自動インデックス付けなど)を無効にします。
これは、使用しているHTTPDによって異なります。私はあなたがApacheを使用していると思います(私が間違っていれば私を修正してください)。誰かにアクセスさせたくないすべてのフォルダーに、次の行を含む.htaccessファイルを配置します。
deny from all
最も簡単な解決策は、リバースプロキシモードでmodセキュリティを構成して、Webサーバーに依存しない構成にすることです。 2番目の部分は、URLをファイルシステムの場所にマップすることです。以下は、 Apache HTTP Server Documentation。
ProxyPass /foo/ http://internal.example.com/bar/
ProxyPassReverse /foo/ http://internal.example.com/bar/
「クライアントが/ foo /ディレクトリの下のドキュメントを要求すると、サーバーはinternal.example.comの/ bar /ディレクトリからそれらのドキュメントを取得し、ローカルサーバーからのものであるかのようにクライアントに返します」[Apache HTTPサーバードキュメント] 。
この質問は、実際には webmasters.se に属し、まもなく動くことがわかります。それでも、あなたのコメントの1つで、Apache configで1つのパラメータ値のみを許可する方法を尋ね、例を挙げようと考えました:
RewriteEngine On
RewriteCond %{REQUEST_URI} (?|&)productid= [NC]
RewriteCond %{REQUEST_URI} !(?|&)productid=1(?|$) [NC]
RewriteRule ^(.*)$ - [F]
このルールは、リクエストURLパラメーターproductid
が存在するが、正確に1ではない場合にのみ適用されます(URLが終了するか、次のパラメーターが開始します)。両方の条件(およびそれらの両方のみ、それらを連結する条件間の[OR]の欠如に注意)が真の場合、Forbidden応答を発行します。同じことを達成する他の方法がありますが、このスレッドが属する場所に移動する前に、これは今私の頭を飛び出しました。乾杯! ;)