mod_rewrite - allgemeine Regel erstellen

KeinKommentar

Stolzer Webbi :-)
ID: 8090
L
13 Juni 2006
2.077
190
Achtung, aktueller Code / Stand in Posting #6.

Habe x Varianten getestet, aber irgendwo ist der Wurm drin. Oder gleich ein ganzes Rudel. :(

PHP:
RewriteEngine on
rewrite base /html
RewriteRule ^/news.html$ /news.php [L]

Ist da etwas grundsätzlich verkehrt? Habe in google geforstet und mehrere Schreibweisen getestet, z.B. auch mit vorgelagertem "DirectoryIndex" oder ausgeschriebenen URL. In allen Variationen habe ich eine Fehlermeldung des Servers nicht nur für die Testseite, sondern für alle Seiten erhalten. Im Server-Log las sich das dann bspw. so:

Code:
[Wed Jun 28 22:21:58 2006] [alert] [client 80.238.233.206] /var/www/web110/html/.htaccess: Invalid command '\xef\xbb\xbfRewriteEngine', perhaps mis-spelled or defined by a module not included in the server configuration

Eingebunden habe ich die .htaccess im obersten Verzeichnis, auf das ich Zugriffsrechte habe und in dem auch alle meine Dateien liegen.

Was kann man aller Wahrscheinlichkeit nach ausschließen?

1) mod_rewrite ist nach Aussage des Hosters aktiviert. Ackermedia hat das sogar noch einmal extra gecheckt.
2) Ja, ich habe der .htaccess entsprechende Rechte gegeben (744) - zumindest in der Kategorie "Besitzer".

Hoffe ja sehr, daß ich nur wieder einen simplen Fehler begangen habe und ihr mir auf die Sprünge helfen könnt.
 
Zuletzt bearbeitet:
liegt die .htaccess im selben verzeichnis wie die datei news.php ?
wenn ja, sollte es so eigentlich gehen:

PHP:
RewriteEngine on 
rewrite base /
RewriteRule ^news.html$ news.php
...allerdings denke ich mitten in der Nacht nicht so gut. :ugly:
 
Mein mangelndes Denkvermögen in Sachen Proggen ist leider unabhängig von der Tageszeit. :LOL:

Grundsätzlich ist Dein Vorschlag nur eine Verkürzung meiner Variante. Wie zu erwarten war, ändert sich dadurch leider nichts am Ergebnis. :(

Naive Frage: Hat die .htaccess in jedem Fall Vorrang oder kann die sich mit irgendeinem Code-Schnipsel anderer Dateien beißen? Irgendwo (Mist, schon eine Weile her...) habe ich paar Zeilen stehen, die die Titelzeile formatieren. Daß eben wenigstens dort ein sinnvoller Text erscheint, der im individuellen Zusammenhang zum jeweiligen Content steht (z.B.: "Nur Bahnhof verstehen - Redensarten und Redewendungen auf redensarten.net" statt immer nur "Willkommen auf redensarten.net").
 
Die Fehlermeldung sieht irgendwie so aus, als ob das Rewritemodul nicht installiert ist. Kannste in der httpd.conf vom Apache machen. Das ; vor mod_rewrite.so rausnehmen.
 
Schreib die .htaccess mit Notepad neu und es geht ;)

Code:
\xef\xbb\xbf
gibt den entscheidenen Hinweis. Editoren können diese Zeichensequenz an den Anfang einer Datei setzen um darauf hinzuweisen "jetzt kommt UTF-8". Apache lies die Datei aber nicht als UTF-8 ein, also denkt er du willst den Befehl "\xef\xbb\xbfRewriteEngine" aufrufen. Kennt er nicht => Error.
 
EDIT: Hm, der "Google-Test" funktioniert schon mal:

PHP:
RewriteEngine On 
RewriteRule ^  https://www.google.de [R,L]

Könnte durchaus damit zusammenhängen, daß ich nun notepad++ nutze. Vielleicht ist da eine Voreinstellung treffender.

Aber

PHP:
RewriteEngine On 
RewriteBase /
RewriteRule ^news\.html$ /news.php [L]

will er ums Verrecken nicht. Kommt zwar keine Fehlermeldung mehr, aber ignoriert es.

EDIT: Ah, so geht es. Ich sage aber lieber nicht, woran es gelegen hat. Es war einfach zu simpel... :oops: :wall:

Aber ob ich die Rules für die Datenbankabfragen hinbekomme, wage ich doch ernsthaft zu bezweifeln... :ugly: Denn ob es nun news.php heißt oder news.html ist ja wohl schnuppe. War nur zu Testzwecken. Aber jetzt geht es ans Eingemachte.

Gilt bspw. https://www.redensarten.net/abc.php?abc=b&wort=Binsen zu ändern in https://www.redensarten.net/Binsen.html Und das am besten als allgemeine Regel, weil es doch etwas sehr mühsam wäre, die ganzen Links, die ja doch von der gleichen Machart sind, mit jeweils einer eigenen Regel zu versehen. Oder?

Und SO wird es ja ohnehin nicht gehen:
PHP:
RewriteRule ^binsen.html$ /abc.php?abc=b&wort=Binsen

Eine kleine, aber grundlegende Frage habe ich schon: Muß ich in der Google-Sitemap die Links umstellen? Tue mich noch etwas schwer damit zu verstehen, auf welchen Ebenen sich mod_rewrite auswirkt.
 
Zuletzt bearbeitet:
Pardon, nun habe ich im Laufe des Tages das vorherige Posting mehrmals komplett editiert, um nicht jedes Mal mit einem neuen Posting angerannt zu kommen. Muß ja nicht sein... Aber damit niemand, der mir eventuell helfen könnte, die Aktualisierungen verpaßt, weise ich doch lieber in einem neuen Posting auf meine Editiererei hin...
 
KeinKommentar schrieb:

Code:
RewriteBase /
RewriteRule ^[/]*([^.])([^.]+)\.html$ /abc.php?abc=$1&wort=$1$2 [QSA,L]

_müsste_ genau das tun was du oben gesagt hast, falls abc als Parameter den ersten Buchstaben bekommt ;)

Eine kleine, aber grundlegende Frage habe ich schon: Muß ich in der Google-Sitemap die Links umstellen? Tue mich noch etwas schwer damit zu verstehen, auf welchen Ebenen sich mod_rewrite auswirkt.

https://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#InternalRuleset erklärt ziemlich gut, wie mod_rewrite arbeitet. Sonst formulier mal eine Frage ;)
 
Bis ich das geistig durchdrungen habe, dauert etwas - wenn überhaupt. :LOL:
Simples Übernehmen hat jedenfalls nicht zum Erfolg geführt.

ps: Doofe Frage: Muß ich dann eigentlich noch was im Script ändern? So wie bei meiner Testregel die Verlinkung?

Und zur geistigen Durchdringung... siehe Nick :sing:
 
Zuletzt bearbeitet:
So, mittels ICQ und bartman ist das grundsätzliche Prob jetzt gelöst. Wie das beim Proggen und bei Computern immer so ist, sind dafür zwar andere aufgetreten, aber die haben nichts mit mod_rewrite zu tun. Könnten allerdings zu einem neuen Thread führen. :LOL:

Für alle, die es interessiert oder die mal ein ähnliches Prob haben werden, noch einmal zusammengefaßt:

In Verbindung mit den entsprechenden Änderungen im Sript (Generieren der Links) ändert

PHP:
RewriteRule ^[/]*([^.])([^.]+)\.html$ /abc.php?abc=$1&wort=$1$2 [QSA,L]

beispielsweise

https://www.redensarten.net/abc.php?abc=b&wort=Binsen

ab in die gewünschte Form

https://www.redensarten.net/Binsen.html
 
:!: Denkt dran die normalen richtigen Punkte in den jeweiligen Regeln zu Escapen

und man sollte glaub ich auf Rewrite Base soweit es geht verzichten wenn ich mich noch richtig entsinne.
 
Zuletzt bearbeitet: