Martin F.: mod_rewrite: RewriteCond bezüglich aktueller Zeit

Moin,

ich benutze meinen Webspace unter anderem als Ablage für temporäre Dateien. Die Ordnernamen entsprechen dem Verfallsdatum, also etwa /20060620233705/. Alten Ordnern (die nicht mehr existieren müssen) möchte ich ein 410 Gone verpassen. Dazu habe ich mir folgende Regel ausgedacht:

RewriteCond %{REQUEST_URI} ^/(20[0-9]{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])[0-5][0-9][0-5][0-9])/
RewriteCond %1 <%{TIME}
RewriteRule .* - [G,L]

Tja, im Prinzip schön, aber er stört sich an RewriteCond %1 <%{TIME}. So kommt immer ein Internal Server Error, wenn ich stattdessen eine feste Zeit dort eintrage, klappt es wunderbar.

Ich könnte zwar auch ein Skript aufrufen, welches prüft, ob die Zeit abgelaufen ist, aber so fände ich es wesentlich eleganter. Hab für die Subdomain auch extra das Ausführen von PHP abgestellt, da ich auch mal PHP-Dateien ablegen möchte ;) Hm, ich könnte eigentlich da noch mit ForceType PHP für die eine Datei aktivieren. Lieber wär mir aber wie gesagt eine funktionierende Lösung nur mittels mod_rewrite.

Irgendwelche Lösungsvorschläge oder andere Denkansätze? :)

Tschau,
Martin

  1. Moin,

    hab jetzt die eine Bedingung umgedreht:

    RewriteCond %{REQUEST_URI} ^/(20[0-9]{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])[0-5][0-9][0-5][0-9])/
    RewriteCond %{TIME} >%1
    RewriteRule .* - [G,L]

    Jetzt kommt kein Internal Server Error mehr. Allerdings sendet er bei allen derartigen URLs ein 410, als ob die zweite RewriteCond nicht beachtet würde.

    Tschau,
    Martin

    1. Moin,

      leider ersetzt er bei der rechten Seite gar nicht die Variablen - folglich kann es so nicht gehen. Habe nun doch ein Skript im Einsatz. Werde evtl. mal ein Feature Request in den Bugtracker eintragen.

      Tschau,
      Martin