2012-01-27 12 views
1

mod_rewriteでファイルの変更時刻(mtime)を考慮することはできますか?mod_rewriteでの変更時刻(mtime)を考える方法

私は何をしたいです:それはより新しい '* .html.eruby' 存在しているとき

  • リターン '* .htmlを':

    • '* .htmlを' にアクセスしたとき。
    • '* .html.eruby'に '* .html'が存在しないか、 '* .html.eruby'より古い場合は、* .html.erubyに書き換えます。

私の.htaccess:もちろん

## inhibit direct access to *.eruby 
RewriteRule \.eruby$ - [R=404,L] 

## rewrite *.html into *.html.eruby when *.html.eruby exists 
## (TODO: rewrite only when *.html.eruby is newer than *.html) 
RewriteCond %{REQUEST_FILENAME}.eruby -s 
RewriteRule ^(.*)$ $1.eruby 
+0

最後に同じ問題を調べたとき、私はそれが不可能であることが分かった。私が知りたい解決策があるかどうかを尋ねるために+1します。 – deceze

答えて

1

解決策があります。私は$ 100 000 000(親友の価格)を売る。冗談だ。

これを解決するには、外部 "フィルタ"を実行するRewriteMapディレクティブを使用します。 hereを参照してください。あなたが見ても何に重点を置いて、ウェブサイトから、 :

外部プログラム書き換え

のMapType:PRG、のMapSource:ここでは、有効な通常のファイルへのUnixファイルシステムのパスは、ソースプログラムではなく、マップファイルであります。 を作成するには、 言語を使用してください。がありますが、結果は実行可能な プログラム(オブジェクトコードまたは魔法のクッキートリック '#!/ path/to/interpreter'最初の行)。

このプログラムは、Apacheサーバーの起動時に一度起動され、 はstdinとstdoutの ファイルハンドルを使用して書き換えエンジンと通信します。

私の助言:Pythonで、2つのファイルのタイムスタンプを比較する非常に簡単なプログラムを作成します。

here for a sample in Perlを参照してください。

+0

ああ、私も同様にこれを見つけましたが、当時私のホストでは実行不可能なものとしてそれを却下しなければなりませんでした...リマインダー+1は、私がそれに適したサーバーを持っているときに使用します。 :o) – deceze

+0

RewriteMapディレクティブは '.htaccess'で利用できないようです。 'httpd.conf'でのみ動作します。 – kwatch

+0

RewriteMapディレクティブは '.htaccess'で利用できません。そうです。 –

関連する問題