まったく私だけの問題なのですが、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>(ここで必ず改行して終わること)
この投稿の短縮リンク: