一連のIPにロックダウンしようとしているワードプレスサイトがあります。index.phpの最初のものとして次のコードを使用しています:(ここで難読化されたIP)
$matchedIP = 0;
$IP = $_SERVER['REMOTE_ADDR'];
$validIPs = array("x.x.x.x", "x.x.x.x", "x.x.x.x", "x.x.x.x", "x.x.x.x");
foreach($validIPs as $validIP)
{
if($IP == $validIP)
{
$matchedIP = 1;
}
}
if($matchedIP == 0)
{
header('Location: http://google.com.au');
}
さまざまなアサーションで確認できるため、IPチェックは正常に機能します。動作しないのはリダイレクトですが、これは決して起こりません。完全なindex.phpは次のとおりです。
<?php
$matchedIP = 0;
$IP = $_SERVER['REMOTE_ADDR'];
$validIPs = array("x.x.x.x", "x.x.x.x", "x.x.x.x", "x.x.x.x", "x.x.x.x");
foreach($validIPs as $validIP)
{
if($IP == $validIP)
{
$matchedIP = 1;
}
}
if($matchedIP == 0)
{
header('Location: http://google.com.au');
}
/**
* Front to the WordPress application. This file doesn't do anything, but loads
* wp-blog-header.php which does and tells WordPress to load the theme.
*
* @package WordPress
*/
/**
* Tells WordPress to load the WordPress theme and output it.
*
* @var bool
*/
define('WP_USE_THEMES', true);
/** Loads the WordPress Environment and Template */
require('./wp-blog-header.php');
//require('./phpinfo.php');
不思議なことに、wordpress blog-header requireをコメントアウトし、代わりにrequireを単純なphpinfoページに含めると、リダイレクトは期待どおりに動作します。
PHPの処理が何らかの形で機能する方法を誤解していますか?確かに、以下の必要なファイルのロードを検討する前に、リダイレクトをヒットする必要がありますか?
編集:Windows IIS7バックエンド、PHPバージョン5.2.17、Wordpressバージョン3.4.2