チラシの裏からうっすら見える外枠の外のメモ書きスマートフォン用の表示で見るチラシの裏からうっすら見える外枠の外のメモ書き新聞に挟まってる硬い紙のチラシの裏からうっすら見える外枠の外に走り書きされたようなものです。思いついたときにふらふらと。この広告は、90日以上更新していないブログに表示しています。2016-09-19さくらのレンタルサーバでPHPファイルを隠してかっこいいURLを作るときにハマることプログラミングこの話題、何番煎じかわからないぐらい有名なことかもしれないだが、思いっきりハマってしまい2日かけてなんとかしたので記念に残しておく。日本のレンタルサーバとして老舗かつ有名なところはさくらインターネットの提供するさくらのレンタルサーバではないだろうか。このさくらのレンタルサーバは低価格で良品質なサーバリソースを提供してくれるのだが、一部仕様により設置しにくいプログラムがある。今回はその中のPHPとhtaccessによるRewriteRuleの仕様について少し書く。注意として、この方法はApacheサーバを対象としている。nginxに関しては別となる。PHPファイルは基本的に「○○○.php」など、拡張子に"php"とつくものが主流である。PHPファイルへデータをWeb上で渡す場合、一般的な方法として次が挙げられる。POSTGETPATHINFOPOSTは問い合わせなどを行うフォームで、GETはGoogle検索などで使われている。このPATHINFOはURLの一部としてデータを渡している。URLの一部として渡すだけであればそれはGETと同じだが、渡し方が異なっており、パラメータの形ではないため評価されやすい。PATHINFOでデータを渡すほうがかっこいいURLになると考えているし、そう考えられる場合が多い。URLの途中に"example.php"などと、プログラムファイルが入るのはなんとも不格好なので、それを取り除こうと考えた。URLの振る舞いとして、通常ドメイン以下の部分はディレクトリないしファイル名と認識する。最後の部分のファイルまたはディレクトリが存在しない場合、その上の部分へ戻ってそれをプログラムファイルとして認識し、その先をPATHINFOとするのが多い。ルートディレクトリにindex.phpを設置してPATHINFOを与えるとどうなるだろうか。多くのサーバではそれらはPATHINFO自体を何らかのファイル名またはディレクトリと考え404などエラーが発生する。これらを防ぐため、このアクセスをすべてPATHINFOとしてindex.phpに紐付けることをする。その際、httpd.confに設定を追加しても問題ないのだが、レンタルサーバの場合は.htaccessに設定することとなる。上が実際に隠す方法だ。説明すると、1行目及び9行目で条件判断である「mod_rewrite.cが導入されているか」が判定される。この"mod_rewrite.c"とは、URLを内部で書き換えるために必要となるモジュールである。これが導入されている場合、2行目から8行目の内容が実行される。2行目ではRewrite機能を有効にしている。これを設定しないとそれ以降の機能は利用できない。4行目では置き換え後のパスが設定される。今回は例としてルートディレクトリとなるためこう書いてあるが、ルートディレクトリでない限りは必要ない。設置場所がルートディレクトリでない場合は、"/"ではなくそのディレクトリを記述すること。6行目、7行目ではアクセスされたファイル名がディレクトリでないこと、ファイルでないことを条件として設定している。特徴として、何かを実行する際の条件は予め設定することが必要となる。8行目では、上で設定した条件のもと、アクセスをすべてindex.php以降の何らかのデータへ変更している。この書き方は以下のように直していることに注意してほしい。この形に変更したURLはPATHINFOでなくGETの形でデータを渡している。この状態でPATHINFOを取得できるかと言えば「できない」ので、以下のコードをindex.phpの最初に追加する。Qiitaこれで$_SERVER['PATH_INFO']からPATHINFOを取り出すことができるはずだ。»プロフィールid:k-hyoda新聞に挟まってる硬い紙のチラシの裏からうっすら見える外枠の外に走り書きされたようなものです。思いついたときにふらふらと。(2)はてなブログをはじめよう!k-hyodaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。