【wordpress】CPIサーバーでサイトアドレスを変更すると「403 Forbidden」エラーになるので対処法
セキュリティ対策のためにWordPressは
ドメイン直下(ルートディレクトリ)ではなく
サブディレクトリを作成しそこにインストールするようにしております。
インストール場所例:
https://example.jp/wp-example/
セキュリティ面だけでなく静的HTMLで別ページを作る時も
WordPressのファイルはサブディレクトリに入っているためごちゃごちゃにならず
サーバー内が整理しやすいのもあります。
今回もいつも通りに
サブディレクトリ(/wp-example/)を作成しWordPressをインストールして
index.phpの編集・ルートディレクトリへアップとサイトアドレスの設定変更で
ルートディレクトリ表示(https://example.jp)させる。
はい、完了
と思ったのですがサイトを見ると…
「403 Forbidden」
は?(;゚д゚)
何と別で作成していた静的HTMLのページすらも表示されません。。。
いつも通りの事をやっているだけなのに
訳が分かりません。。。
一旦index.phpとサイトアドレスを最初の状態に戻しました。
にもかかわらずまだ
「403 Forbidden」
オイ(゚A゚;)
ルートディレクトリにある.htaccessを開いてみると
下記の記述が残っていたので削除して
1 2 3 4 5 6 7 8 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> |
アップし直したところ…
元に戻りました(https://example.jp/wp-example/)。
静的HTMLのページも表示されました。
「ということは…これってルートディレクトリにしか
WordPressインストールできないじゃん(#゚Д゚)」
と数分憤っていたのですが 冷静になって調査してみましたところ
解決方法がありました(゚∀゚ 三 ゚∀゚)
何やら見知らぬ記述が書かれていた
私はよくルートディレクトリには自ら.htaccessを作成しアップするのですが
WordPressインストール時にサブディレクトリ内にできる.htaccessと
見比べてみるとサブディレクトリ内の.htaccessに見知らぬ記述がありました。
サブディレクトリ(/wp-example/)に入ってた.htaccess
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
AddHandler x-httpd-php74 .php suPHP_ConfigPath /home/ディレクトリ名/html/wp-example <FilesMatch "^(\.htaccess|\.htpasswd|php\.ini|.*\.sql|.*\.log|.*\.cron|.*\.inc|.*\.phps|.*\.yml)$"> Deny from all </FilesMatch> Options +SymLinksIfOwnerMatch # BEGIN WordPress # "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は # 動的に生成され、WordPress フィルターによってのみ修正が可能です。 # これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /wp-example/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /wp-example/index.php [L] </IfModule> # END WordPress |
「suPHP_ConfigPath /home/ディレクトリ名/html/wp-example」
これはなぁに???|ω・)
どうやらこの記述が原因のようでした。
ルートディレクトリにアップしていた.htaccessは
自ら作成してアップした.htaccessだったため当然この記述がありません。
この記述を
「suPHP_ConfigPath /home/ディレクトリ名/html/」
に変更して
ルートディレクトリにアップしなければならなかったようです。
こんなの教えてもらわんと分からんて…(´-ω-`)
一旦サブディレクトリの.htaccessをダウンロードしてきて編集、
ルートディレクトリにアップすることにします。
CPIサーバーでWordPressをサブディレクトリに設置のまとめ
サブディレクトリを作成しWordPressをインストール
インストール場所例:
https://example.jp/wp-example/
なら「wp-example」フォルダを作成しその中にWordPressをインストール。
サイトアドレスを変更
管理画面から設定>一般で
サイトアドレスをルートのURL(https://example.jp)に変更して「変更を保存」をクリック。
サブディレクトリ内の.htaccessとindex.phpをダウンロード
WordPressをインストールしたフォルダ内にある.htaccessとindex.phpをダウンロード。
フォルダ内のは削除せずそのままにしておきます。
ダウンロードしたindex.phpを編集
「require( dirname( __FILE__ ) . ‘/wp-blog-header.php’ );」
を
「require( dirname( __FILE__ ) . ‘/wp-example/wp-blog-header.php’ );」
に編集します。
ダウンロードした.htaccessを編集
変更箇所は下記の3箇所
- suPHP_ConfigPath /home/ディレクトリ名/html/wp-example
- RewriteBase /wp-example/
- RewriteRule . /wp-example/index.php [L]
編集後の.htaccess
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
AddHandler x-httpd-php74 .php suPHP_ConfigPath /home/ディレクトリ名/html/ #変更箇所 <FilesMatch "^(\.htaccess|\.htpasswd|php\.ini|.*\.sql|.*\.log|.*\.cron|.*\.inc|.*\.phps|.*\.yml)$"> Deny from all </FilesMatch> Options +SymLinksIfOwnerMatch # BEGIN WordPress # "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は # 動的に生成され、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 |
編集した.htaccessとindex.phpをルートディレクトリにアップロード
編集した.htaccessとindex.phpをドメイン直下(ルートディレクトリ)にアップロードします。
サイトを確認すると無事にルートディレクトリ表示(https://example.jp)になりました(*゚▽゚*)
他のサーバーではこんなこと無いのですがね…
何はともあれ対処できて良かったです。
この記事の投稿者
taka
Webサイト作ってます。
最近のモットー「決して無理をしないスタイル」
twitter: @taka_sbs