いくつかのURLをリダイレクトする必要があります。ヘッダーが値渡しのすべてを使用していません
かつて私はこれらは私が古いURLにアクセスしようとする試みを処理するために、自分のコードに次のように入れ
http://mysite.com/foobar/1234
へのポインティング
http://mysite.com/foobar/?section_id=1234
をされなかった。
$section_id = filter_input(INPUT_GET, 'section_id', FILTER_SANITIZE_NUMBER_INT);
if ($section_id) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$_SERVER["SERVER_NAME"]."/foobar/".$section_id);
}
問題は、URLをリダイレクトした後です:
http://mysite.com/foobar
必要なIDはありません。そのif
声明の中で
私は
echo "Location: ".$_SERVER["SERVER_NAME"]."/foobar/".$section_id;
をすれば、私が得る:
http://mysite.com/foobar/1234
が、その後、リダイレクトはまだ1234
一部を含めることができません。
これはなぜ、どのようにリダイレクトするのですか?オオヤマネコの
出力Location
ヘッダは、その値として絶対的に有効なURLを持っている必要がありますhttp://mysite.com/foobar/1234(すなわち、それは私には正しく見える)
HTTP/1.1 301 Moved Permanently
Date: Mon, 20 Feb 2012 18:55:09 GMT
Server: Apache/2.2.3 (CentOS)
X-Powered-By: PHP/5.2.6
Set-Cookie: PHPSESSID=c35123456; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
X-Pingback: http://mysite.com/xmlrpc.php
Link: <http://wp.me/mysite>; rel=shortlink
Location: mysite.com/foobar/1234
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=UTF-8
もしあなたができるなら、リダイレクトは 'mod_rewrite'を使ってもっと簡単になります –
' http:// mysite.com/foobar/1234'はあなたを 'http:// mysite.com/foobar /'にリダイレクトしないことを確認しましたか? ? '$ lynx -head -dump http:// mysite.com/foobar/1234'はヘッダが正しいかどうかを判断するのにも役立ちます。 – Vitamin
@Vague私はそれを試してみましたが、それは私には正しいと思われました(私は質問に出力を添付しました) – Lothar