MovableTypeでブログを作成しています。
そこに新たに「i」というディレクトリを用意して、iPhone専用ページを作成しました。
そのうえで.htaccessファイルには以下のように記述しています。
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod)
RewriteRule ^$ i/ [L]
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod)
RewriteRule ^index\.php$ i/ [L]
これでトップページはうまくリダイレクトできました。
元)http://www.mydomein.jp/
先)http://www.mydomein.jp/i/
しかし個別ページは、もともとMovableTypeの設定で「archive」というディレクトリ内の、
さらに年別・月別ディレクトリに作成しているため、どのように表記すればよいか判りません。
色々と試したのですが、正規表現が判っていないためにうまくリダイレクトできませんでした。
以下のようにリダイレクトさせたい場合、どのようにhtaccessを記述すればよいでしょうか。
元)http://www.mydomein.jp/archive/yyyy/mm/dd-hhmmss.php
先)http://www.mydomein.jp/archive/i/yyyy/mm/dd-hhmmss.html
ちなみにMovableTypeの元記事はphp形式ですが、iPhone専用ページは通常の静的なページのため、
html形式にしています。
「http://mydomein.jp/」直下ではなく、「archive」ディレクトリ下の.htaccessに次の記述を追加してみてください。
(WEBルート直下に記述した場合の記述は、分かりませんでした。)
RewriteEngine on # 次の2行を追加 RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod) RewriteRule ^/?([0-9]+)/(.*)?$ /archive/i/$1/$2 [R,L] # 以降は元からある記述です。 # don't serve mtview.php if the request is for a real directory # (allows the DirectoryIndex lookup to function) RewriteCond %{REQUEST_FILENAME} !-d
※トップページをリダイレクトする記述は、そのままWEBルート直下の.htaccessに記述して置いてください。
こんなんでどうでしょう?
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod) RewriteRule ^archive/(.+)\.php$ /archive/i/$1.html [R,L]
早速のご回答を、ありがとうございます。
いただいた記述をしてみましたが、やはりiPhoneのsafariで直接に個別ページを表示させようとすると、リダイレクトされずにPC版の内容で表示されてしまいました。
もちろんページそのものはちゃんとあり、正しくリンクを貼ってあるiPhone専用TOPページからだと表示されるのですが……。
「http://mydomein.jp/」直下ではなく、「archive」ディレクトリ下の.htaccessに次の記述を追加してみてください。
(WEBルート直下に記述した場合の記述は、分かりませんでした。)
RewriteEngine on # 次の2行を追加 RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod) RewriteRule ^/?([0-9]+)/(.*)?$ /archive/i/$1/$2 [R,L] # 以降は元からある記述です。 # don't serve mtview.php if the request is for a real directory # (allows the DirectoryIndex lookup to function) RewriteCond %{REQUEST_FILENAME} !-d
※トップページをリダイレクトする記述は、そのままWEBルート直下の.htaccessに記述して置いてください。
頂いた内容を記述したところ、リダイレクト先としてうまく「archive」内の「i」にある指定されたページ名を表示しました!……が、拡張子が「php」のままで、404エラーとなってしまいました。
これをリダイレクト先として「html」にするには、どのように記述すればよろしいでしょうか。
最後の最後までどうもすみません。
【追伸】
以前にコメントで頂いた記述をもとに見よう見まねで以下のように書いたところ、うまくいきました!
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod)
RewriteRule ^/?([A-z_0-9/-]+)\.php$ /archives/i/$1.html [R,L]
今回はお時間をたくさんとっていただきまして、本当にどうもありがとうございました。
頂いた内容を記述したところ、リダイレクト先としてうまく「archive」内の「i」にある指定されたページ名を表示しました!……が、拡張子が「php」のままで、404エラーとなってしまいました。
これをリダイレクト先として「html」にするには、どのように記述すればよろしいでしょうか。
最後の最後までどうもすみません。
【追伸】
以前にコメントで頂いた記述をもとに見よう見まねで以下のように書いたところ、うまくいきました!
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod)
RewriteRule ^/?([A-z_0-9/-]+)\.php$ /archives/i/$1.html [R,L]
今回はお時間をたくさんとっていただきまして、本当にどうもありがとうございました。