• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:.htaccessでblogをiphone表示とPC表示に振り分けたい)

.htaccessでblogをiphone表示とPC表示に振り分ける方法

このQ&Aのポイント
  • 質問者は.htaccessを使用して、自分のブログをiPhone表示とPC表示に振り分けたいと考えています。
  • 現在、彼はサーバーにインストールして使っているタイプのブログを運営しています。
  • 彼は.htaccessに特定の設定を追加したところ、iPhoneからのアクセスは正しく振り分けられますが、Twitterからのアクセスでは問題が発生しています。彼はこの問題について助言を求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • x_lady007
  • ベストアンサー率75% (37/49)
回答No.3

#ANo.1です。 以下のように記述しているってことですよね? ------------------------------ RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}/index.php !-f RewriteCond %{REQUEST_FILENAME}/index.html !-f RewriteCond %{REQUEST_FILENAME}/index.htm !-f RewriteCond %{REQUEST_URI} !/index.php/ RewriteRule ^(.*)$ index.php?pathinfo=$1&%{QUERY_STRING} [L] RewriteCond %{HTTP_USER_AGENT} iPhone RewriteCond %{REQUEST_URI} !^/blog/i/ RewriteRule ^(.*)$ /blog/i/$1 [R=302,L] ------------------------------ これだと各ディレクトリに index.php index.html index.htm が存在しない場合などに、上の RewriteRule が適用されてしまいます。 なので、各ディレクトリに index.php index.html index.htm を配置するか、必要なければ以下のようにまるまるコメントアウトしてしまってもたぶん問題ないと思います。 ------------------------------ RewriteEngine on # RewriteCond %{REQUEST_FILENAME} !-f # RewriteCond %{REQUEST_FILENAME}/index.php !-f # RewriteCond %{REQUEST_FILENAME}/index.html !-f # RewriteCond %{REQUEST_FILENAME}/index.htm !-f # RewriteCond %{REQUEST_URI} !/index.php/ # RewriteRule ^(.*)$ index.php?pathinfo=$1&%{QUERY_STRING} [L] RewriteCond %{HTTP_USER_AGENT} iPhone RewriteCond %{REQUEST_URI} !^/blog/i/ RewriteRule ^(.*)$ /blog/i/$1 [R=302,L] ------------------------------

niconico1968
質問者

お礼

お礼が遅くなり、申し訳ございませんでした; いろいろとお教えいただいて、本当に、本当に助かりました。 ありがとうございました!

その他の回答 (2)

  • x_lady007
  • ベストアンサー率75% (37/49)
回答No.2

テストしてみましたが以下で問題なく動作しました。 RewriteEngine On RewriteCond %{HTTP_USER_AGENT} iPhone RewriteCond %{REQUEST_URI} !^/blog/i/ RewriteRule ^(.*)$ /blog/i/$1 [R=302,L] 以下が実現できればいいんですよね? http://ドメイン/blog/  ↓↓↓ http://ドメイン/blog/i/ http://ドメイン/blog/***/  ↓↓↓ http://ドメイン/blog/i/***/ http://ドメイン/blog/***/***.html  ↓↓↓ http://ドメイン/blog/i/***/***.html など。

niconico1968
質問者

お礼

はい! まさにそのとおりなのですが・・ なぜか私の方ではできません; blogをインストールした時点で設置されていた.htaccessに書かれていたものは以下になります。 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}/index.php !-f RewriteCond %{REQUEST_FILENAME}/index.html !-f RewriteCond %{REQUEST_FILENAME}/index.htm !-f RewriteCond %{REQUEST_URI} !/index.php/ RewriteRule ^(.*)$ index.php?pathinfo=$1&%{QUERY_STRING} [L] ...何度も本当にすみません;

  • x_lady007
  • ベストアンサー率75% (37/49)
回答No.1

このような場合は正規表現を使います。 RewriteRule ^$ /blog/i [R]  ↓↓↓ RewriteCond %{REQUEST_URI} !^/blog/i/ RewriteRule ^(.*)$ /blog/i/$1 [R=302,L] 簡単に説明しますと・・ 2行目の(.*)は"どんな文字でも"という意味で、$1で呼んでいます。 1行目は、/blog/i/以下がリダイレクトの対象にならないようにしています。

niconico1968
質問者

お礼

ご回答ありがとうございました。 早速、教えていただいた正規表現に書き換えてみました^ でも。。やっぱり http://ドメイン/blog/個別記事ファイル名 への直接アクセスは、iphone用ページに飛んでくれないようなのです。。 あきらめるしかないでしょうか?・・・

関連するQ&A