人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

mode_rewriteを使ってPHPファイルの拡張子をhtmlに変換しています。
list.phpのパラメータにページ番号を付けて、「page-1.html」のように
表示したくて以下のようなコードをhtaccessに書いたのですが、404エラーになります。

RewriteEngine On
RewriteRule ^(.*)\.html $1.php [L]
RewriteRule ^page-(.*)\.html list.php?page=$1 [L]

2行目に「すべてのPHPファイルをHTMLにする」記述をしているからだと思いますが、
目的のことをしたい場合、どういう書き方にすればいいのでしょうか?

●質問者: kt26
●カテゴリ:ウェブ制作
✍キーワード:E-1 HTML ON PHP いるか
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● y-kawaz
●10ポイント

RewriteRuleは上から順にマッチするので順番を入れ替えて以下のようにすれば良いと思います。

RewriteEngine On
RewriteRule ^page-(.*)\.html list.php?page=$1 [L]
RewriteRule ^(.*)\.html $1.php [L]
◎質問者からの返答

コメントの方と同じで、順番を変えただけではtest.htmlのようなファイルが表示されません。


2 ● rouge_2008
●60ポイント ベストアンサー

実在するファイルが書き換えの対象にならないように、「RewriteCond」で条件を追加してください。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page-(.*)\.html list.php?page=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html $1.php [L]

※上記で上手くいかない場合は、コメントアウトを外して、実在するフォルダも対象外になるようにしてください。

ちなみに、「http://?」記述した場合はリダイレクトになりますので、現状のように「.htaccess」を設置した場所からの相対パスか、「/xxx/?」のようにWEBルートからのパスで指定するといいです。

◎質問者からの返答

この書き方で出来ました。大変参考になりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ