2020/02/29

お名前.comのレンタルサーバー RSプラン で cron を使った話

最近のお名前.comはレンタルサーバーがパワーアップして
RSプランというのが用意されました。

ドメイン登録数 無限!とか
SSLが無料で!とか
WordPress標準搭載!とか
まぁ色々と売り込みされているのです。

じゃあ、昔のSDプランと比べて何が違うのよ?
っていう話だと、

サーバーやってる人からすると一番大きいのはもちろん!

「SSH接続によるシェルログイン」が出来るかどうか!!!!
なわけですw


実際問題、
・SSL証明書が無料
・登録ドメイン数無限
・SSH接続可能
で、月1300円(まとめ払なら最大月900円まで割引)

なんていう値段設定のレンタルサーバーなんて他にないわけでwwww


じゃあ、「SSH接続によるシェルログイン」が出来ると
サーバーエンジニアなら、色々夢が広がるわけです。


その最たるものが、「cron」が使えるかどうか!


「cron」というのは、何かというと
スケジュールを設定して、自動で実行できるなんやかんやです

つまるところ、定期的に、自動実行してほしいものって結構あるんですよこれが・・・。


試しに、
「/home/r0000000/」(用意されているサーバーのルート)に「cron」ディレクトリを用意して

crontab -e で、cron設定に

* * * * * echo `date +"\%Y-\%m-\%d \%H:\%M:\%S"` >> /home/r0000000/cron/cron.log

を記述したところ・・・・。



ちゃんとログに書き込まれていってるーーーーーー。


* * * * * cd /home/r0000000/cron/; php test.php >> /home/r0000000/cron/test.log


って感じで、php(中身はechoするだけ)の実行もできるか確認したところ・・・・。


ちゃんとログに書き込まれていってるwwwwwww



その後、データベースへのアクセスとかcUrlを試したりしたけど
問題ナッシングだった。



つまり、「cron」使えますwww


値段にそぐわない、圧倒的な高性能だと感じてしまったwwww
もし、レンタルサーバーなやんでたら、お名前のRSプランを検討に入れてもいいと思いますよ~。

2020/02/28

一つのphpで処理するページで、.htaccessでスマホページに切り替えを入れようと思ってループにハマった話。

.htaccess の書き方がなんとなくしかわからない時
ネットで検索して、例文をコピペしてくるんですが、
今回は、「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