mod_rewriteによるパーマリンク構造変更で苦悩

まったく私だけの問題なのですが、WordPress を使って東南アジアのリゾートホテル写真集にブログ機能を持たせた時からず~っと気になっていたのがパーマリンク(それぞれのページのURL)構造でして

いろいろなパーマリンクを作れるのだが、、、

この途中に入っている 「index.php」 を取り去りたくてしょうーがなかったのです。
が、このテのことは全くのシロウトなのでどうやったらいいのかまったくわかりませんでした。

悶々した日々を送りつつあるとき知り合いがWordPressを使いたいというのでインストールを代行したところその知り合いのWordPress管理画面のパーマリンク設定ページでは最初から 「index.php」 が入っていなくて実にスマートな表記になっていました。

同じWordPressなのになんで?

思わず

な ん で だ よ ~ :angry:

こういうパーマリンクを Pretty Permalinks と呼ぶらしいのですが、この日以来自分も Pretty にしたくて :ase: もうネット検索しまくり、そこでたどり着いたのが mod_rewrite というものでした。

調べていくと、通常サーバーにWordPressをインストールすると mod_rewrite というものが書かれた .htaccess というファイルが自動生成されるのらしいのですが、私が使っているファーストサーバではそれが行われていないことがわかりました。
たしかに知り合いのWordPress管理画面パーマリンク設定ページ最下段には

自動生成されたmod_rewrite

なんだかわからない文字列が並んでいまして、よく見ると mod_rewrite と書かれています。私のパーマリンク設定ページにはこんな表示はな~んにもありません ::(:

ここから苦悩の日々がはじまり、テストサイトであれこれ試行錯誤を繰り返し
やっと昨日 Pretty になりました :wa-i:
ねっ、私だけの問題でしたでしょ(笑)

いろいろ書いても仕方がないので今回重要だったキーワードをいくつかあげておきます。

  • mod_rewrite
  • .htaccess
  • Options FollowSymLink
  • 301リダイレクト

あと検索エンジンを使いキーワード 「ファーストサーバ mod_rewrite」で検索してこのサイトにたどり着いた方のために mod_rewrite 例を載せておきます。
.htaccessに以下のmod_rewriteを記述しました。
前社長が新幹線で全裸になって捕まったファーストサーバ(苦笑)でWordPressをインストールしてパーマリンクが Pretty にならないとお悩みの方、参考にしてください。
これで本当に正しいのかどうかわかりませんがいまのところ問題は起きていません。

<IfModule mod_rewrite.c>
Options FollowSymLinks
RewriteEngine On
RewriteBase /virtual/www/travel/hotels
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /travel/hotels/index.php [L]
</IfModule>(ここで必ず改行して終わること)

ついでに(まだあるのかいっ)ファーストサーバでWordPressをインストールすると文字化けしますので .htaccessに

php_flag mbstring.encoding_translation off
php_value default_charset "UTF-8″ (ここで必ず改行して終わること)

を記述する必要があります。これもかなり検索してやっとわかったことでした。

いずれにしても調べまくればどうにかなるもんですね。。。ちょっと疲れましたが :mu-n:

追記:2008/5/14 20:30
この

<IfModule mod_rewrite.c>
Options FollowSymLinks
RewriteEngine On
RewriteBase /virtual/www/travel/hotels
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /travel/hotels/index.php [L]
</IfModule>(ここで必ず改行して終わること)

を、こうしたり

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /virtual/www/travel/hotels
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /travel/hotels/index.php [L]
</IfModule>(ここで必ず改行して終わること)

こうしても

RewriteEngine On
RewriteBase /virtual/www/travel/hotels
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /travel/hotels/index.php [L](ここで必ず改行して終わること)

URLは書き換えられるようです。
なにぶんシロウトなので参考程度ということでお願いします。
いわゆる自己責任でお願いしますということです :poripori:

ちなみに現在は知り合いのWordPress自動生成のmod_rewriteと同じような記述をしています。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /virtual/www/travel/hotels
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /travel/hotels/index.php [L]
</IfModule>(ここで必ず改行して終わること)

コメント

  1. Yasu より:

    大変参考になりました。ありがとうございます!

  2. 象支店長 より:

    :reply: Yasuさん

    はじめまして。
    この投稿が多少なりともお役に立ったようでなによりです。

    苦悩中、ファーストサーバに「mod_rewrite 」について問い合わせを行ったところ
    その回答は実に簡単なものでした :mu-n:

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━
    お問合せの件でございますが、お客様にて「.htaccess」 を設置頂き、
    「.htaccess」内で mod_rewrite を利用するために必要となる記述を
    行って頂く事でご利用可能かと存じます。
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━

    実に「あら、そっ」って感じであります。
    ファーストサーバでは、ヘルプメニューよりまずはネット検索ですね(笑)

    コメントいただきましてどうもありがとうございました。

  3. […] mod_rewriteによるパーマリンク構造変更で苦悩 ::: 東南アジアのリゾートホテ… […]

  4. ウルトラビジネス2|ファーストサーバ【レンタルサーバー】メモ より:

    […] <IfModule mod_rewrite.c> Options FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> 参考サイト:mod_rewriteによるパーマリンク構造変更で苦悩 […]

  5. WordPress 2.6 のパーマリンク…

    [Translate] 前回の投稿「WordPress 日本語版 2.6」で「WordPress 2.6 のパーマリンクの一部がうまく機能しない」と書きましたが、その対策がわかりましたのでお知らせいたします。詳細は色々と調べる必要がありそうですが、今のところうまく機能しているようです。ご参考まで。 概要は以下のとおりです。 サーバー上の WordPress 日本語版 を 2.5.1 から 2.6 にアップグレードしてから、パーマリンクの「日付と投稿名」などがうまく機能しなくなりました。「日付と投稿名…

タイトルとURLをコピーしました