1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WordPressのパーマリンク設定を変更すると.htaccessは自動更新される

Posted at

はじめに

皆さんは日々の業務などでWordPressのパーマリンク設定を変更する機会はありますか?また管理ページから変更したパーマリンク設定は、どのように制御されているかご存知でしょうか?

パーマリンク設定を変更するとWordPressが自動で .htaccessファイルを更新し、appcheがファイルを読み取ることでパーマリンクが反映される流れになっています。

このWordPressによる.htaccessの自動更新を理解していなかったために、WordPressサイト移行時に手間取ってしまいました。同じ悩みを抱えている方がいらっしゃるかもしれませんので、こちらで共有させていただきます🙋‍♂️

こんな方におすすめ

  • WordPressサイトを運営している方
  • WordPressサイトのディレクトリ変更を予定している方

先に結論

  • .htaccessBEGIN WordPressEND WordPressの間に独自のパーマリンク設定を書いてはいけない
  • BEGIN WordPressEND WordPressの間はWordPressが自動で変更してしまう

詳しく紹介

WordPressをインストールすると、以下のような.htaccessが生成されます。

# BEGIN WordPress

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

# END WordPress

BEGIN WordPressと書かれているので、ついつい「WordPressのリダイレクト設定はここに書けば良いのかな?」と勘違いして、独自のリダイレクト設定などもこの後に続けて記述すると、パーマリンクを変更したタイミングで消えてしまいます。

独自のパーマリンク設定を追記したい場合は、以下のようにBEGIN WordPresstとEND WordPressの外に書くようにしましょう。

# BEGIN WordPress
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# Origin Setting
<IfModule mod_rewrite.c>
    RewriteEngine On
    RedirectMatch 301 ^/hogehoge/(.*) /fugafuga/$1
</IfModule>
# Origin Setting

ちなみにパーマリンク設定を変更した際の処理は

  • wp-admin/options-permalink.php  
    • 91行目 if ( isset($_POST['permalink_structure']) || isset($_POST['category_base']) )
  • wp-includes/class-wp-rewrite.php
    • 1027行目public function set_permalink_structure($permalink_structure)

このあたりの処理を見ていただくと確認できるかと思います。

滅多にパーマリンク設定を変更する機会はありませんが、サイトのお引っ越し時にパーマリンク変更する時もありますので、覚えておいて損は無いかと思います。
少しでもお役に立てましたら、幸いです 🙇‍♂️

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?