勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

日本語込みのURLをRewriteRuleで書き換える2

   

以前にメモをした「日本語込みのURLをRewriteRuleで書き換える」という内容をもうちょっと掘り下げたのでメモ。やりたいことは同様でWordPressのパーマネントリンク的なこと。

 

■やりたいこと

「http://hoge.com/あいうえお/」というURLを叩いた際に「http://hoge.com/index.php?param=あいうえお」に書き換える。

 

■htaccess例

 

■解説

書き換えを有効にする。Offだと無効。

 

書き換え後のパスのベース。下位ディレクトリに書き換えたい場合は「RewriteBase /sample」とかになる。お名前.comの共用サーバー(SDサーバー)の場合は必ずこれを設定する。

 

RwriteCondはRewriteRuleの適用条件。条件に適用した場合は書き換えを行い、適用しない場合は普通にアクセスさせるというもの。

「REQUEST_FILENAME」は変数で「!」は否定で「-f」「-d」はオプション。また、「-f」はフォルダが存在すればtrue、「-d」はディレクトリが存在すればtrueという意味。

なので「アクセスしてきたファイル名やディレクトリが存在しない場合はRewriteRuleを適用し、存在する場合は適用しない(普通にアクセスさせる)」という意味になる。

もしこれを書いておらず、「http://hoge.com/dir/」というディレクトリを作り、アクセスしようとすると「http://hoge.com/index.php?param=dir」に書き換えられてしまう。

 

文字列があった場合は「index.php?param=」の後にクエリとして渡される。[L,QSA]はオプションでLが「条件にマッチしたらそこで終了」、QSAは「別途クエリがあった場合は引き継ぐ」というもの。

まずLの方はちょっと良い例が思い浮かばなかったけれども、

と書いた場合に、1行目でマッチしても終了せず2行目に行くのでhoge.phpの方に書き換えられるっぽい。

次にQSAの方は「http://hoge.com/test/?id=1」とアクセスした場合に、QSAありだと「http://hoge.com/?param=test&id=1」になり、無しだと「http://hoge.com/?param=test」になった。

 

■その他

結局のところWordPressのhtaccessと同じような感じになった。RewriteCondとかオプションとか全く知らなかったので勉強になった。

 - htaccess

  関連記事

images
アクセスしてきたURLをRewriteRuleで書き換えたい

「http://aaa.com/a」というURLを叩いた際に「http://aa ...

images
htmlファイル内でPHPを動かす(AddHandler)

サイトを引き継ぐことがあり、ソースを確認していると拡張子はhtmlなのにPHPの ...

images
htaccessとhttpd.confの優先度

既に完成しているシステムを引き継ぐことがあり、そこのリライトルール設定を変更した ...

images
海外IPの制限

海外IPの制限を行ったので手順のメモ。 まず「サーバー立てたらすぐ攻撃が来る」と ...

other
htaccessでダイジェスト認証を行う方法

何かで調べ物をしていたときにdigest認証というものを見かけた。apacheの ...

other
htaccessについて

#正規表現いりそうなので後回しで覚える AuthName "php user" ...

images
htaccessでスマホ判別とCookie制御する方法

サイトを閲覧しているデバイスがスマホ且つ特定のCookieの値が入っているユーザ ...

images
複数の方法で301リダイレクト

サイトのディレクトリやファイル名を大幅に変えるという案件があった。それ自体は問題 ...

Top-Ten-Google-SEO-Ranking-Factors
動的なページを静的なページにしてSEO対策

SEOの観点から見た場合、動的ページよりも静的ページの方が 良いとのこと。インデ ...

images
日本語込みのURLをRewriteRuleで書き換える

※2015/07/15追記 こちらの記事の方がやりたい事は同じだけど、もっとスマ ...