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

mod_rewriteの使い方で、前回(http://q.hatena.ne.jp/1200309139)のように教えていただきました。

しかし、この方法だと「.html」のファイルを同じディレクトリに入れると、ブラウザがNot Foundと表示し、有効となりません。

そこで質問ですが、.htmlのファイルはそのままHTMLファイルとして表示させる方法はありますでしょうか?
また、特定のディレクトリのみmod_rewriteの設定を無効とさせる方法はありますか?

●質問者: k27w
●カテゴリ:ウェブ制作
✍キーワード:HTML mod_rewrite NOT FOUND ディレクトリ ファイル
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● y-kawaz
●40ポイント

前回の質問のどのパターンでも良いですが、RewriteRuleの前に以下のように2行のRewriteCondを追加すればよいです。

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

!-d は「ディレクトリが存在しなければ」という条件で、!-f は「ファイルが存在しなければ」という条件を追加したことになります。

◎質問者からの返答

こちらの方法が一番簡単で、思い通りに出来ました。ありがとうございました。


2 ● ヨネちゃん
●20ポイント

特定のディレクトリに

RewriteEngine Off

を設置するのが良いと思います。

http://www.avis.ne.jp/user-support/homepage/hosting/mode_t.html


3 ● khoshi3
●30ポイント

こんにちは。前回に引き続きになりますが、回答させていただきます。先に回答されている方の補足になれば幸いです。

>.htmlのファイルはそのままHTMLファイルとして表示させる方法

こんなのでいかがでしょうか? /test/foo.htmlが無いときに限り、/test/foo.phpにrewriteされます。

<Directory "/var/www/html/test">

Options ExecCGI FollowSymLinks

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /test/

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*).html $1.php [L]

</IfModule>

</Directory>

RewriteCondで条件付きrewriteが出来ます。詳細は下記URLあたりをご参照ください。

http://www.net-newbie.com/trans/mod_rewrite.html#RewriteCond

>特定のディレクトリのみmod_rewriteの設定を無効とさせる方法

これですが、逆に、上記のように Directoryディレクティブまたは.htaccessで、

特定のディレクトリ配下にだけ、Rewriteルールをつけたほうが安全で管理しやすいかと思います。

関連質問


●質問をもっと探す●



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