サポート » 使い方全般 » サブディレクトリで運用する際の.htaccessの設定について

  • 表題の件でご相談です。

    PCサイトが http://sample.com/ で運用されており、
    新たにPCと同じページをスマートフォン用に作成する為、サブディレクトリ http://sample.com/sp/ にWordPressを設置いたしました。

    ここで、トップドメインのルートの.htaccessにPCとスマートフォンを振り分けURLを書き換える記述をいたしましたが、転送がうまくいきませんでした。

    RewriteEngine on
    RewriteBase /

    #PCページにスマートフォンからのアクセス
    RewriteCond %{REQUEST_URI} !/sp/
    RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|BlackBerry|Windows\ Phone)
    RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpg|jpeg|css|js|cgi)$ [NC]
    RewriteRule ^(.*)$ sp/$1 [R]

    #SPディレクトりにスマートフォン以外からのアクセス
    RewriteCond %{REQUEST_URI} /sp/
    RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|iPad|Android|BlackBerry|Windows\ Phone)
    RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpg|jpeg|css|js|cgi)$ [NC]
    RewriteRule ^sp/(.*)$ $1 [R]

    1.#PCページにスマートフォンからのアクセス
    SPディレクトリ以外にスマートフォンからアクセスがあった場合、URLを書き換える。
    こちらは転送がうまくいっております。

    2.#SPディレクトりにスマートフォン以外からのアクセス
    こちらの処理がうまくいきません。

    spディレクトリには、以下の.htaccessが設置されております

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

    # END WordPress

    どのように対応したらよろしいのか、ご教示いただけませんでしょうか。
    何卒、宜しくお願い申し上げます。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • 実際に http://sample.com/sp でWordPressはアクセスできるのでしょうか?
    Not Found に成りますよ。

    mod_rewriteの優先度に引っかかってると思われます。
    詳細解説が書かれたページがあるのでご参照ください。
    http://www.nurs.or.jp/~sug/homep/rewrite/rewrite15.htm#sec3

    ちゃんとテスト環境を作ってログを見たわけではないので半ば推測ですが、

    /sp/.htaccess が先に参照され、 /.htaccess にあるUSER_AGENTのCond条件を
    検証する前にrewrite先が /sp/index.php と確定されるため、
    / へのアクセスは振り分けられるのに、 /sp/ では振り分けが効かない

    …という症状かと思います。
    /sp/.htaccess 側に分けて書いたりする必要がありそうです。

    (WordPressが用意する.htaccessとの依存関係をどう処理すればいいか
    パッとは思いつかず、曖昧な回答ですみません。。)

    トピック投稿者 stosr

    (@stosr)

    맹조さん> 説明が不足しており申し訳ございません。
    PCサイトが仮に記載のURLで運用しているという仮定の話でございます。

    BreezeGaleさん>参考URLありがとうございます。

    SP側のhtaccessが先に参照され、TOPの方が読み込めない原因としては、
    /sp/.htaccess が Lで打ち切りしている場合ここで処理が終わってしまているといった状態なのでしょうか

    こういったケースの場合、/.htaccess 側に、/sp/.htaccess を記述して対応するなども可能なのでしょうか

    もしよろしければご回答お願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「サブディレクトリで運用する際の.htaccessの設定について」には新たに返信することはできません。