こんにちわ、hizumekazukiさん。
こちらのトピックが参考になるかもしれません。
二つのサイトURLを入れ替えたい
https://ja.forums.wordpress.org/topic/146242?replies=4
KUCKLUさん早速の返信、ありがとうございます。
このやり方を実装してみましたが、なぜか新固定ページへリダイレクトしません。
ワードプレス初心者なので、固定ページのURLなどの記述が違っているのかもしれませんが、
ホームページを http://old.com , http://new.com
ワードプレスの固定ページを profile とした場合
http://old.com/profile
から
http://new.com/profile
と、そのまま記述するだけでよいのでしょうか??
リダイレクトなので、特に WordPress は関係ないかな?と思うのですが、具体的にはどういう作業をされたのでしょうか?
一般的には .htaccess を使って行う事が多いとは思いますが、WordPress の場合ですとプラグインもありますので・・・。
確認させていただきたいのですが
今回の内容は、ドメインを変更したという解釈で相違ないでしょうか?
KUCKLUさん返信ありがとうございます。
はい、ドメインを変更しました。
.htaccess に
RewriteEngine On
RewriteCond %{http_host} ^old.com
RewriteRule ^(.*) http://new.com/$1 [R=301,L]
という記述をしました。
こうやったところ、トップページのリダイレクトはできたのですが、
直接 http://old.com/profile にアクセスがあった場合リダイレクトのやり方がわかりません。
では、こちらではいかがでしょうか?
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(old\.com)(:80)? [NC]
RewriteRule ^(.*) http://new.com/$1 [R=301,L]
こちらのサイトを参考にしました。
■サイトリニューアル時の301リダイレクト、.htaccess記述方法いろいろ | SEOまとめ
http://www.seo-matome.jp/blog/web-design/site-renewal-301-redirect/
KUCKLUさん、ありがとうございます。
こちらを記述したところ、
やはりトップページのリダイレクトしかできません。
直接、http://old.com/profile にアクセスすると、そのページを表示してまいます。
正確に言うなら、
ページの内容は同じですが、
アクセスされているページが
http://new.com/profile
ではなく、
http://old.com/profile にアクセスされてしまいます。
こちらではいかがでしょうか。
旧 URL の htaccess に追加してください。
<IfModule mod_rewrite.c>
RedirectMatch 301 ^/$ http://new.example.com/$1
RedirectMatch 301 ^/(.*)$ http://new.example.com/$1
</IfModule>
KUCKLUさん本当にありがとうございます。
そして、大変申し訳ないのですが、
旧 URL の htaccess ってなんでしょうか?
旧 URL の htaccess ってどこに存在するのでしょうか??
何度も何度もすみません ! !
確認なのですが、WordPress はドメインだけ変更して、サーバー移転などはしていないという事で相違ないでしょうか?
という前提でのちょっと力技なのですが、こんなのはいかがでしょうか?
PHP でリダイレクトさせています。(力技ですみません orz)
以下ソースコードを 使用中のテーマの functions.php に記載してみてください。
※サーバー環境によっては、$_SERVER の内容が取得できずにエラーになるかもしれません。また、htaccess に追記したリダイレクト設定は削除しておいてください。
function http_host_301_redirect() {
// 現在のブログの URL 情報
$site_host = parse_url( get_bloginfo('url', 'raw' ) );
// 現在のブログのドメイン
$site_host = $site_host['host'];
// リクエストがあったドメイン
$http_host = $_SERVER["HTTP_HOST"];
// リダイレクト先の URL を形成
$redirect = (empty( $_SERVER["HTTPS"] ) ? "http://" : "https://") . $site_host . $_SERVER["REQUEST_URI"];
// 現在のブログのドメインとリクエストがあったドメインが一致した場合は何もしない
if ( $site_host === $http_host )
return;
// 301 リダイレクトさせる
wp_redirect( $redirect, 301 );
}
add_action( 'template_redirect', 'http_host_301_redirect', 0 );
Chrome のアドオン HTTP Headers などを使用していただければ、301 リダイレクトされているのが確認できると思います。
https://chrome.google.com/webstore/detail/http-headers/mhbpoeinkhpajikalhfpjjafpfgjnmgk
はい、WordPress はドメインだけ変更して、サーバー移転などはしていないです。
早速試してみます!
ありがとうございます!!!
ぅおーーーーー!!!!!
できました!!!
ありがとうございます!!!!!
ちなみに、このサイトです。w
http://kazupi-world.com
最後に1つだけ質問よろしいでしょうか??
これを組み込んだことにより、何か不都合が起こりそうな事とかはあるのでしょうか?
1 つあります。
■ リダイレクト可
http://old.example.com/hoge から http://new.example.com/hoge
■ リダイレクト不可
http://old.example.com/hoge から http://new.example.com/fuga
となるので、新ドメインのパーマリンク ( ページ URL ) を変えた場合は、先ほどの関数を少しカスタマイズする必要があります。
つまり、ドメイン以下のURL構造が一緒でなければならい という制約が先ほどの関数ではあります。が、カスタマイズはそんなに大変ではないと思います。
わかりました!
KUCKLUさん、
最後まで丁寧に本当にありがとうございます!!!