サポート » 使い方全般 » WordPressのRewriteについて

  • 解決済 ultimative

    (@ultimative)


    Rewriteが上手くできずにいるのですが、どの記述がいけないのかをご教示願います。

    WordPressを仮に

    example.com/xxx

    へとインストールしている状態とします。

    自動生成されている.htaccessは

     - - - - - - - - - - - -

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

    # END WordPress

     - - - - - - - - - - - -

    なのですが、このルールに以下のルールを追加したいと考えています。

     - - - - - - - - - - - -

    RewriteEngine on
    RewriteBase /xxx/
    RewriteCond %{REMOTE_ADDR} ^123\.456\.78\.901
    RewriteRule ^.*$ http://www.yahoo.co.jp/

     - - - - - - - - - - - -

    つまり、特定のIPアドレスだけを特定のURLへリダイレクトさせたいと考えています。

    WordPress謹製の記述に追記するとエラーが出そうですし、設定変更時に上書きリセットされそうなので触れないようにしています。

    まず、WordPressが吐き出した部分を上に、当方の記述は下にして.htaccess内に次のように並記しました。

     - - - - - - - - - - - -

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

    # END WordPress

    RewriteEngine on
    RewriteBase /xxx/
    RewriteCond %{REMOTE_ADDR} ^123\.456\.78\.901
    RewriteRule ^.*$ http://www.yahoo.co.jp/

     - - - - - - - - - - - -

    テストを兼ねて上記のリモートホストには自分のリモートホストを入れました。

    そして、固定ページである

    example.com/xxx/ttt/

    へアクセスすると、リダイレクトされずに固定ページが表示されてしまいます。
    ただ、cssファイルがリダイレクトされている感じで、デザインが崩れた状態で表示されます。

    この記述のまま

    example.com/xxx/

    へとアクセスすると、ちゃんとリダイレクトされます。

    さらに、存在しない

    example.com/xxx/tt

    へアクセスすると、固定ページの

    example.com/xxx/ttt/

    へとリダイレクトされ、やはりデザインが崩れた状態で表示されます。

    次に、ワードプレスが吐き出した部分を下に、当方のルールを上にすると、

    example.com/xxx/ttt/
    example.com/xxx/

    のどちらへアクセスしても

     - - - - - - - - - - - -

    Found

    The document has moved here.

    Additionally, a 302 Found error was encountered while trying to use an ErrorDocument to handle the request.

     - - - - - - - - - - - -

    とエラーになります。

    WordPressが吐き出した記述に触れることなく干渉させないで書く方法がわかりませんでした。

    どなたかご存知の方がいらっしゃいましたら、何とぞよろしくお願いいたします。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック投稿者 ultimative

    (@ultimative)

    補足です。

    WordPressが吐き出した部分を上に、当方の追加ルールを下側に記述した状態で以下を試しました。

    まず、プラグインを全部無効にしても症状は変わりませんでした。

    また、存在しない

    example.com/xxx/ttttttt

    へアクセスすると404ページが表示されました。

    さらに、アップロードした画像に

    example.com/xxx/wp-content/uploads/2017/03/gazou.jpg

    直接アクセスすると、ちゃんとリダイレクトされました。

    固定ページ内のcssに

    example.com/xxx/up/wp-content/themes/te-ma/style_pc.css

    直接アクセスしても、ちゃんとリダイレクトされました。

    何となく、WordPressが自動で記述している
    index.php
    の部分に当方の追加ルールが効いていないような気がしていますが、どう修正して良いかやはりわかりません。

    このリダイレクトの追記について、WordPress側が自動で記述した箇所より上側に追記すれば良いと説明しているサイトもあるのですが、それを試すと上記の通りのエラーとなります。

    何か手立てをご存知の方がいらっしゃいましたら、何とぞよろしくお願いいたします。

    トピック投稿者 ultimative

    (@ultimative)

    さらに補足です。

    固定ページの下に適当な文字列5555546346をつけて

    example.com/xxx/ttt/5555546346

    にアクセスすると、固定ページのデザインが崩れた状態で表示されます。

    CG

    (@du-bist-der-lenz)

    WordPressのRewriteEngine Onより前に実行させた時にエラーが出たのは何故でしょう。
    その実行される命令の流れを考えてみましょう。
    対象をRewriteBase /xxx/とされているので、そのドメインが向いている、サーバー上のファイルということですよね。当然、WordPressの固定ページは実在しないのですから、ドキュメント、つまりは実体のファイルが移動された可能性がある、となるのでしょう。

    こんにちは

    以下のトピックと同じ内容ですよね?
    https://ja.wordpress.org/support/topic/htaccess%E3%81%A7index-php%E3%81%8C%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84/

    あちらを一旦クローズされた方が良いと思います。

    トピック投稿者 ultimative

    (@ultimative)

    Du bist der Lenz様

    わかりやすいご回答をいただき誠にありがとうございます。

    .htaccessから見ると固定ページが実在しない扱いということをまったく知りませんでした。

    エラー内容がすこぶる腑に落ち、無事に作動させることができました、ありがとうございました!

    munyagu様

    ご指摘いただき誠にありがとうございます。

    こちらの質問を投稿させたいただいた時には、

    index.phpだけ効いてないということまで気づいていませんでした。

    そのため、症状をできるだけ詳しく伝えねばといろいろ煩雑に書いてしまい、

    丸一日経っても何も反応がない状態になっていたので

    問題箇所だけをピンポイントで追加質問してしまった次第です。

    ただ、それぞれの質問について皆様のおかげで問題点や考え方など整理でき感謝至極です、ありがとうございました!

    CG

    (@du-bist-der-lenz)

    寛解できましたか。
    とかく「丸一日経っても何も反応がない状態になっていた」のは、ご自身の経緯補足のコメントがあったため、返信がないトピックにならなかったからでしょうね。
    わたしは一作業が区切りのついた時に、新しく更新されたトピックの通知を確認しているので、返信のないトピックを優先しています。
    また、曜日や時間も、返信がつきにくいことに考慮するのが良いでしょうね。

    一部誤解されたまま解決されているようです。

    .htaccessから見ると固定ページが実在しない扱いということをまったく知りませんでした。

    htaccessから見て、ファイルやディレクトリの実体があるかどうかは全く関係がありませんし、htaccess動作時に確認する機能もありません。

    htaccessがファイル実体のないuriにリダイレクトしても、リダイレクト後の何らかのリダイレクトルールで(この場合はWordPressのリダイレクトルール)でコンテンツが表示されれば良いのです。

    ですので、WorsPressのリダイレクトルールの前に書く必要があります。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「WordPressのRewriteについて」には新たに返信することはできません。