パーマリンクを変えたら、wordpressはいい感じにリダイレクトしてくれるのかと思ったら、そんなことないんですね。。
というわけで、パーマリンク変えたので301リダイレクト
をしたいわけです。
パーマリンクって規則正しいので、わざわざ、URL一つずつ指定しなくても、
プログラムでリダイレクトしたほうが楽だからです。
目次
URLの取得
$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
// 417.run/hogehoge/
フルバージョン
$url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
// https://417.run/hogehoge/
301リダイレクト
ちなみにheaderの前にechoとか画面に出力されるようなことしたらだめです。
これをプログラムでなんかしてfunctions.php
の先頭に書けばOK
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://417.run/$name/$post->ID/");
exit;
おまけ(私がやったやつ)
$url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$res = explode('417.run/', $url);
if (count($res) > 1) {
$res = explode('/', $res[1]);
if (count($res) > 0) {
if (strpos($res[0], '20') !== false) {
$name = array_pop($res);
if ($name == '') {
$name = array_pop($res);
}
$the_query = new WP_Query(['name' => $name]);
if ($the_query->have_posts()) {
foreach ($the_query->posts as $post) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://417.run/$name/$post->ID/");
exit;
}
}
}
}
}