ここにいるほとんどの人にとって簡単な質問があります。Web サイトで、visit.php という 1 つの単純な PHP リダイレクトを介してすべてのリンクをリダイレクトしています。
私はこのようにアウトバウンドリダイレクトをフォーマットしています..
visit.php?url=google.com
visit.php?url=yahoo.com
visit.php?url=aol.com
次に、私のvisit.phpは次のようになります...
<?php
$url = htmlspecialchars($_GET['url']);
if($url == 'google.com'){
header("Location: http://google.com");
}
if($url == 'yahoo.com'){
header("Location: http://yahoo.com");
}
if($url == 'aol.com'){
header("Location: http://aol.com");
}
else {
header("Location: http://mydomain.com/404");
}
私が抱えている問題は、elseステートメントにあります。スクリプトから削除すると、すべてが期待どおりに機能します。これを挿入すると (スペルミスがあると 404 にリダイレクトされます)、スクリプトで定義したすべてのリンクが上書きされ、404 にリダイレクトされます。
私が抱えているもう 1 つの問題は、?url= 変数が使用されていない場合です。私のサイトのユーザーがリンクをクリップボードにコピーし、それを ?url= 以外の何かに変更した場合、404 にリダイレクトしたいと思います。これを達成するために使用しようとしたコードは次のようになります...
if(!isset($_GET['url'])){
header("Location: http://mydomain.com/404");
}
私の論理は... ?url= 変数が設定されていない場合は、誰かが遊んでいるに違いないため、404 にリダイレクトするだけです。誰かが visit.php?id=blah をロードした場合、404 にリダイレクトする必要があります。
ただし、期待どおりの動作が得られません。私はPHPとプログラミング全般にかなり慣れていないので、これらの質問が幼稚園レベルである場合はご容赦ください。ありがとう。