0


URL の空白に問題があります。アドレスにスペースが含まれている場合にリクエストを正しくリダイレ​​クトする方法.私はxamppを使用しています.これは私がこれまでに持っているものです.

htaccess

RewriteEngine On
RewriteBase /test/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]


index.php

//sample pages
$pages = array('home','about','contact');
$parts = explode("/",$_SERVER['REQUEST_URI']);

    if(!in_array(end($parts), $pages))
    {       
        header("HTTP/1.0 404 Not Found");
        echo "Page not found";  
        die();
    }
    else
    {
        echo "You are on the ".end($parts)." page";
    }

error.php

echo "Error!";

アドレスhttp://localhost/test/contactkまたはhttp://localhost/test/contact を入力すると、すべてが正しく機能しますが、誰かが誤って空白を含むアドレスを入力すると、すべてがクラッシュし、ページが localhost の外にリダイレクトされて、できます。次のようなものを参照してください:

localhost/test/contact の結果を表示
する localhost/test/cont act の代わりに検索する

不正なリクエストをすべて error.php ファイルにリダイレクトする方法
ありがとうございます。

4

2 に答える 2

0

これは典型的なブラウザ機能です。2 つのまったく異なるタスクを実行できるロケーション バーがあります。

  • ロードする URL を入力してください
  • デフォルトの検索エンジンで検索する検索語を入力します

次の 2 つの理由から、URL として識別されていない文字列を入力しています。

  • プロトコル プレフィックスで始まらない (例: http://)
  • エスケープされていない空白が含まれています (URL では許可されていません)。

...ブラウザは、「バルセロナのレストラン」と入力した場合と同様に、Google で検索したいと想定します。

安全のために、完全な URL を入力してください。

http://localhost/test/cont%20act

...しかし、訪問者がこのエラーを起こすのを防ぐことはできません。これは、ブラウザとユーザーの間のプライベートなものです;-)

于 2013-08-01T10:31:41.570 に答える