2017-09-04 12 views
-2

特定のページのURLを非表示にして、ユーザーがそのページに直接アクセスしないようにしたい。特定のページの実際のURLを非表示にすることはできますか?

は、私は、ユーザーがWWWにリダイレクトされる前に完了する必要がフォームを持っている。******。com/xyz.php。

彼らはフォームを完了し、リダイレクトされた場合、それは、WWWのように表示されるURLのために可能である。******。com?

アドバイスを楽しみにしています!それはベストプラクティスではないかもしれないが

+4

なぜリダイレクトしていますか?なぜフォームからのPOST要求に応答してコンテンツを提供するだけではないのですか? – Quentin

+1

「URLから隠れている」という言葉を考えないでください。ユーザーが見るページは、URLによって決まります。ブラウザに表示されるURLは、ユーザーに表示されるページのURLです。ユーザーはページAにアクセスすることはできませんが、アドレスバーにはページBを表示することはできません。彼らがページBを訪れている場合は、ページBがアドレスバーに表示され、そうでない場合はページBにはアクセスしません。あなたが取り入れる必要があるのは、HTTPのリクエストレスポンスであり、サーバーは常に*何* request *に送る* response *の完全な制御。 URLはそれのほんの一部です。 – deceze

答えて

0

あなたは、HTTP POSTアクションのためのHTTP GETアクションと別のHTMLの1セットを提供することができます。あなたのgetアクションはフォームを返すことができ、postアクションへの応答はあなたの2番目のページを返すことができます。

は、これらには、これは悪い考えであることを多くの理由があります

  • のHttp投稿 ページへのアクセスを保護ない、状態の変化を引き起こすことを意図していることは容易にで敗北さ
  • 任意の種類のプロキシまたはレストクライアント
  • ブラウザでのナビゲーションが予期せず動作する可能性があります。
  • ユーザーは、訪問ごとにフォームに記入する必要があります。

一時的なアクセストークンを生成するか、クッキーを設定してフォームが完成したと言ってもいいでしょう。

最高ソリューションは、おそらく議論のための次第ですが、単純な解決策では、二つの.phpのページはのは、彼らにindex.phpform.phpを呼ぶことにしましょう持っていることです。 GET要求がwww.example.comに行われると、Webサーバーはindex.phpを提供するように構成されています。 (正確な方法は、サーバーソフトウェアによって異なります)。

index.phpはクッキーをチェックし、クッキーが設定されていない場合はform.phpにリダイレクトします。 See this question/answer for more details

form.phpフォームのクッキーを設定し、index.phpに戻るリダイレクトによってPOST要求にHTMLを提供することによってGET要求に応答します。 WWWのルートディレクトリに

+0

「簡単に敗北しました」...?それはちょうど何かに対する防衛であるとは必ずしも考えられていません... – deceze

+0

@deceze "ユーザーが直接アクセスすることを防ぐ" - しかし多分防衛はまだ強すぎる –

-2

****コム.htaccessと呼ばれるファイルを作成します(まだ存在しない場合)、その中に次の行を追加します。。

DirectoryIndex xyz.php 

これは、すべてのリダイレクトしますwww。****。comからwww。***。com/xyz.phpへのリクエスト

したがって、ユーザがwww。****。comを訪問すると、ブラウザに表示されるurlは同じですが、ロードされたページはxyz.phpになります

:)

+0

"www。****。comのルートディレクトリ.htaccessというファイルを作成します。 " - ここでは、Webサーバーテクノロジについての前提を設定しています。 – Quentin

+1

"これは、www。****。comからwww。***。com/xyz.phpへのすべてのリクエストをリダイレクトします" - 質問に記載されている目標は、** 'xyz.php '。このコードでは、2つの異なるURLに直接アクセスできるようになります。 – Quentin

関連する問題