ネットで検索して、例文をコピペしてくるんですが、
今回は、「https://hogehoge.jp/」にアクセスしたとして
スマホでアクセスしたら
「https://hogehoge.jp/sp/」にアクセス出来るようにしたかったのです。
ですが、これをやる前に、
「https://hogehoge.jp/submenu/」にアクセスした場合
「https://hogehoge.jp/index.php?path=/submenu/」
として、一つのphpで、処理したかったので
----------------------
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]
----------------------さらに、最後がファイル名じゃなかった時に
必ずスラッシュを入れたかったので
----------------------
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.[^/\.]+$
RewriteRule .* %{REQUEST_URI}/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]
----------------------スマホページでのリダイレクト方法としてよくでてくる
----------------------
RewriteCond %{REQUEST_URI} !/sp/
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android.*Mobile|Windows.*Phone)
RewriteRule ^(.*)$ sp/$1 [L,R=301]
----------------------末尾に、無限ループで sp/sp/sp/sp/sp/.......
結果、「ERR_TOO_MANY_REDIRECTS」となってしまうという悲しみ
ここで、やっと、ちゃんと.htaccessの記述内容を調べることを思い立つわけです。
結論からいえば、
----------------------
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !/sp/
RewriteCond %{REQUEST_URI} !/index.php
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android.*Mobile|Windows.*Phone)
RewriteRule ^(.*)$ sp/$1 [L,R=301]
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.[^/\.]+$
RewriteRule .* %{REQUEST_URI}/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]
----------------------RewriteCond %{REQUEST_URI} !/index.php
この一行の大事だったこと・・・。
ループの原因は、まず、
「https://hogehoge.jp/sp/」にアクセスした場合
「https://hogehoge.jp/index.php?path=/sp/」
にリダイレクトされます。
しかし、スマホの場合
「https://hogehoge.jp/index.php?path=/sp/」
でアクセスされると
「https://hogehoge.jp/sp/index.php?path=/sp/」
にリダイレクトされます。
でも、index.phpで処理をしたいので
「https://hogehoge.jp/index.php?path=/sp/sp/」
にリダイレクトしますwwww
はい。
無限ループの完成wwwwwwwwwww
なので、スマホのページの処理で
index.phpで処理する場合はリダイレクトしないようにするために
----------------------
RewriteCond %{REQUEST_URI} !/index.php
----------------------
を追加したということです。
あーややこしや。
そんな感じでしたww
でアクセスされると
「https://hogehoge.jp/sp/index.php?path=/sp/」
にリダイレクトされます。
でも、index.phpで処理をしたいので
「https://hogehoge.jp/index.php?path=/sp/sp/」
にリダイレクトしますwwww
はい。
無限ループの完成wwwwwwwwwww
なので、スマホのページの処理で
index.phpで処理する場合はリダイレクトしないようにするために
----------------------
RewriteCond %{REQUEST_URI} !/index.php
----------------------
を追加したということです。
あーややこしや。
そんな感じでしたww
0 件のコメント:
コメントを投稿