- ベストアンサー
.htaccessでblogをiphone表示とPC表示に振り分ける方法
- 質問者は.htaccessを使用して、自分のブログをiPhone表示とPC表示に振り分けたいと考えています。
- 現在、彼はサーバーにインストールして使っているタイプのブログを運営しています。
- 彼は.htaccessに特定の設定を追加したところ、iPhoneからのアクセスは正しく振り分けられますが、Twitterからのアクセスでは問題が発生しています。彼はこの問題について助言を求めています。
- みんなの回答 (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] ------------------------------
その他の回答 (2)
- x_lady007
- ベストアンサー率75% (37/49)
テストしてみましたが以下で問題なく動作しました。 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 など。
お礼
はい! まさにそのとおりなのですが・・ なぜか私の方ではできません; 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)
このような場合は正規表現を使います。 RewriteRule ^$ /blog/i [R] ↓↓↓ RewriteCond %{REQUEST_URI} !^/blog/i/ RewriteRule ^(.*)$ /blog/i/$1 [R=302,L] 簡単に説明しますと・・ 2行目の(.*)は"どんな文字でも"という意味で、$1で呼んでいます。 1行目は、/blog/i/以下がリダイレクトの対象にならないようにしています。
お礼
ご回答ありがとうございました。 早速、教えていただいた正規表現に書き換えてみました^ でも。。やっぱり http://ドメイン/blog/個別記事ファイル名 への直接アクセスは、iphone用ページに飛んでくれないようなのです。。 あきらめるしかないでしょうか?・・・
お礼
お礼が遅くなり、申し訳ございませんでした; いろいろとお教えいただいて、本当に、本当に助かりました。 ありがとうございました!