Tach!
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{HTTP_HOST} ^domainname.(.*) [NC]
RewriteRule ^([-\w]+).html$ index.php?d=%1&k=$1 [QSA]
RewriteRule ^$ index.php?d=%1&k=index [QSA]
>
> Funktioniert die zweite RewriteRule nicht mehr (Unabhängig davon in welcher Reihenfolge ich die RewriteRule setze). Wieso, was ist plötzlich falsch? Da sich %1 laut der Dokumentation auf die RewriteCond bezieht, müsste das doch eigentlich problemlos funktionieren?
RewriteConds gelten nur für die unmittelbar danach stehende RewriteRule. Deine zweite RewriteRule hat keine RewriteConds.
> -f prüft doch, ob die Datei existiert oder nicht. Ein Ausrufezeichen davor bedeutet, "wenn die Datei nicht existiert" mache das und jenes.
"Machen" macht eine RewriteCond gar nichts. Sie passt oder passt nicht und schränkt die RewriteRule weiter ein, die vorher schon gepasst haben muss.
> Ich wollte aber gerade meine Seite bei google manuell indizieren lassen, dabei muss man eine html file auf seinen webspace schieben. Gefordert getan, nur aufrufen kann ichs nicht (etwa: http://domainname.de/google-ka8zefsh8ef.html). Der geht mir nämlich trotzdem in die index.php und gibt mir, weil er dann den Datensatz in der Datenbank nicht zuordnen kann, ein liebes 404 Not Found aus, das ich selbst erstellt habe. Die Datei liegt wie die index.php im gleichen Verzeichnis. Aber laut !-f darf die Datei ja nicht existieren, damit er rein geht?
Für welche Regeln genau gilt jetzt dieses Problem? Ich kann dir nur soviel sagen, dass ^$ nur bei leerem Pfad zieht (ab der Stelle im Pfad, in der die Regeln wirken). -f mit oder ohne ! hat keine Auswirkungen mehr, weil die Regel ja nicht matcht, wenn ein Dateiname angegeben ist.
dedlfix.