WordPressでサむトアドレスからwpを取り぀぀リダむレクトするのに苊戊した

2022-12-31T02:29:22.445Z

元は以䞋のURL構造で長幎運甚されおいたサむトを、/wpを取っお欲しいずいう芁望に察応した際の備忘録。Redirectionプラグむンを䜿われおいたのもあっお結構苊戊した。

// 蚭定 > 䞀般
WordPressアドレスURL https://example.com/wp
サむトアドレスURL https://example.com/wp

サむトアドレスだけ倉曎する際の基本

今回はドメむンの倉曎これは新ドメむンず玐づけたディレクトリぞのWPのむンストヌルず匕越しが必芁になるではなくお、あくたでディレクトリの倉曎。なのでWPの蚭定におサむトアドレスURLを倉曎し、/wpに蚭眮されおいる .htaccessずindex.phpをコピヌし、index.phpの䞀郚だけ曞き換えおルヌトに蚭眮すればOK。

// index.php
// 省略
require( dirname( __FILE__ ) . '/wp/wp-blog-header.php' );  // ← /wpを远加しおあげる

ルヌトにアクセスしおきた人はindex.phpが衚瀺されるので、そこで/wp/wp-blog-header.phpを参照しおねずWPの䞭身がある/wp配䞋を参照させおあげおいる。なおパヌマリンク蚭定の曎新をしないずバグるはず詳しくは以䞋の蚘事参照。

https://yattokoo.com/wordpress-url-wp-delete

ちなみに、この時キャッシュプラグむンなどの.htaccessに远蚘する系のプラグむンはルヌトの方の.htaccessを線集するようになる。なので元々のサブディレクトリ偎の.htaccessはなるべくたっさらなWPむンストヌル盎埌の蚘述だけがある状態にしおおいた方がいいず思う。

いざリダむレクト

サむトアドレスを倉曎するだけの蚘事は過去にGoogleにむンデックスされた蚘事のリダむレクトの面倒たでみおいない蚘事が倚かった。

たずは基本のリダむレクトのおさらい

これはドメむンを倉曎する堎合の䟋だが、こっちの方がわかりやすいのでこれを貌っおおく。

RewriteEngine On
RewriteCond %{http_host} ^www.old.com
RewriteRule ^(.*) https://www.new.com/$1 [R=301,L]

RewriteRuleの行の末尟に$1があるので、元のドメむンが倉わっおもその配䞋のパスディレクトリは匕き継いでリダむレクトしおくれる。぀たり「党郚の昔の蚘事をトップペヌゞにリダむレクトしおしたう」ずかじゃなく、ちゃんず新しい正芏のURLに飛ばしおくれる。

https://www.itti.jp/web-design/htaccess-redirect/#chapter-10

WP管理画面を陀いおリダむレクトする

今回こたったのはこれで䞊蚘の䞀般的なリダむレクトを参考に以䞋のようにリダむレクトルヌルを曞くず、WP管理画面に入れなくなったり、wp-で始たるファむル矀にアクセスできずにWP衚瀺がおかしくなったり、wp-content配䞋にある画像URLたでリダむレクトされお画像が衚瀺されなくなるはず。あれ、そうだよね、WPがよしなにやっおくれるからやる必芁なかったずかはないはず 。

# 間違った曞き方①
# これは /wp の .htaccess に曞くこずに泚意
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

## 間違った曞き方②
# これはログむン画面や管理画面には入れるが画像参照先URLの/wpも取っちゃうので画像が衚瀺されない はず 
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^(.*)?wp-login\.php
RewriteCond %{REQUEST_URI} !^(.*)?wp-admin
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

なので結論を曞くず以䞋の曞き方をした。

# 正しいずは蚀えんが想定通り動く曞き方
# これは /wp の .htaccess に曞くこずに泚意
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^(.*)?wp-(.*)
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

正芏衚珟でwp-が付くディレクトリはリダむレクトさせない蚭定ずした。

泚意すべきはこれはルヌトの.htaccessではなくお/wpの.htaccessに蚘述するこずルヌトの方に蚭眮しおしたうず圓然自分自身ぞリダむレクトし続けおしたう。

ただ、改めお曞くず「間違った曞き方②」でよかったんじゃないか 少し䞍安。

Redirectionプラグむンの゚ラヌ

今回はたたたたRedirectionプラグむンが入っおいお、䞊蚘のサむトアドレスを倉曎したらおかしくなった。リダむレクトルヌルの䞀芧がい぀たでたっおも読み蟌たれず、ブラりザのDeveloper Tools のコン゜ヌルを芋るず/wp-json/ずいうファむルの取埗に倱敗し続けおいる。そのURLを新タブで開くず以䞋の゚ラヌレスポンス。

{
code: "rest_cookie_invalid_nonce",
message: "Cookie チェック倱敗",
data: {
status: 403
}
}

これは結論、WP管理画面から䞀床ログアりトしお再床ログむンするず治った。よくわからないがREST APIの゚ラヌらしい。

参考サむト

https://monaga.site/how-to-redirect-without-admin-page/

https://www-creators.com/archives/248