サポート » 使い方全般 » WordPressをサブディレクトリにインストールし、サイトURLで表示させる時のルートディレクトリの.htaccessの記述について

  • 解決済 asako

    (@asako08)


    WordPressをサブディレクトリにインストールし、サイトURLで表示させる場合のルートディレクトリに置く.htaccessの記述について質問させてください。

    ルートディレクトリに置く.htaccessで
    # BEGIN WordPressから始まる記述の中で、RewriteBase と RewriteRule の部分ですが、
    RewriteBase /
    RewriteRule . /index.php [L]
    が正しいのでしょうか?

    普段、あまり中の記述をしっかり見ていなかったのですが、管理しているサイトでルートの.htaccessの記述が以下のように、サブディレクトリ内の.htaccessと同様になっているものがありました。

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

    RewriteBase と RewriteRule にサブディレクトリのフォルダ名が入っています。
    サイトや管理画面なども正しく表示されており、問題はないのですが、間違っているのなら直した方が良いでしょうか?

    また、上記とは少し話がずれるのですが、今回.htaccessが元々ルートにあり、サイトアドレスを変更した際に# BEGIN WordPressから# END WordPressまでの記述が、勝手に追記されたようなのですが、これはwordpressがそのような仕様になっているのでしょうか?

    どうぞよろしくお願いいたします。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • CG

    (@du-bist-der-lenz)

    .htaccess ファイルはWordPressがリライトします。設定のためだったり、一時的な必要性があったり、データベース以外でもWordPressのシステムがいろいろとファイルを作ります。それが、既存のサイトのファイルをほかのサイトにコピーしてもエラーを引き起こしたり、PHPの仕組みを利用して、悪意のあるファイルを作らせる脆弱性をも含んでいます。

    こんにちは

    記述は合っています。
    RewriteBase はリダイレクト後のURLの基準になります。
    末尾の RewriteRule は基準ディレクトリの記述が重複していますが、正しく動くようです。

    参考)
    http://algorhythnn.jp/blg/2014/08/25/htaccess-rewritebase/

    ※記事のソース部分はエラーで見れませんが、解説は参考になると思います。
    以前はちゃんと見れてたんですけどね・・・

    トピック投稿者 asako

    (@asako08)

    @munyagu

    ご回答、参考URLありがとうございます。

    つまりは、

    RewriteRule . /index.php [L]

    ルートディレクトリのindex.phpが表示される

    RewriteRule . /wp/index.php [L]

    サブディレクトリ wpフォルダ 直下のindex.phpが表示される

    という動作になり、どちらでも良い、ということでしょうか?

    いいえ

    RewriteBase /wp/という記述があるので両方とも

    サブディレクトリ wpフォルダ 直下のindex.phpが表示される

    です。

    トピック投稿者 asako

    (@asako08)

    @munyagu

    ありがとうございます。すいません、質問の記述で不備がありました。
    # BEGIN WordPressから# END WordPressの中に、RewriteRuleが2回書かれているのに気づいていませんでした。

    ルートディレクトリの.htaccessの記述が、サイトAとサイトBで違っていたので不思議に思って質問させていただいていました。確認した時点では、以下のようになっておりました。

    ●サイトA

    # 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

    ●サイトB

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

    しかしながら、先程もう一度確認したところ、サイトBの記述もサイトAと同様に変更されていました。
    理由はよくわかりませんが、# BEGIN WordPress以降の部分は自動的に書きかえられたりするようなので、何かのタイミングで変更されたみたいです。
    おさわがせしました。参考URL、勉強になりました。ありがとうございました。

    CG

    (@du-bist-der-lenz)

    「理由はよくわかりませんが、# BEGIN WordPress以降の部分は自動的に書きかえられたりするようなので、何かのタイミングで変更されたみたいです。」について確認します。
    .htaccessの記述は、FTPで確認されたのでしょうが、再度変更後の確認をする度にログアウト、ログインしていますよね。ログインしたままでは、サーバー側の更新は反映されないものと思います。

    トピック投稿者 asako

    (@asako08)

    @du-bist-der-lenz

    ありがとうございます。
    .htaccessの記述についての確認は、FTPから.htaccessファイルをダウンロードして確認しました。
    FTPソフトはCyberduckを使っており、昨晩、サイトAとBの中を何度か行き来し、それぞれ3回ほどダウンロードし直して確認しておりました。
    その後、Cyberduckをシャットダウンした状態で一旦ログアウトになり、今日、立ち上げた際にログインしたということで、更新が反映されたということですかね。

    CG

    (@du-bist-der-lenz)

    Cyberduckに一時的にダウンロードされたファイルを行き来して見ていただけだったのでしょう。Cyberduckには、サーバーの最新状態に更新する項目があったと思います。

    トピック投稿者 asako

    (@asako08)

    @du-bist-der-lenz

    Cyberduck、ツールバーに更新ボタンがありました。次回からはこちらを更新して確認するようにいたします。どうもありがとうございました。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「WordPressをサブディレクトリにインストールし、サイトURLで表示させる時のルートディレクトリの.htaccessの記述について」には新たに返信することはできません。