Verzeichnis aus RedirectMatch ausnehmen
Hallo, ich setze auf einer Website in der .htaccess eine permanente URL-Umleitung mit: RewriteEngine on RedirectMatch permanent (.*)/*\.html$ http://www.meinedomain.de$1.php Das funktioniert auch, aber leider zu gut, denn damit komme ich auch nicht mehr an die Logdateien in www.meinedomain.de/stats/ heran. Natuerlich kann ich die Logdateien herunterladen, aber das ist nicht immer moeglich. Die Frage ist nun, wie ich dieses Verzeichnis aus dem RedirectMatch ausnehmen kann. Eine .htaccess mit einem "RewriteEngine off" bringt es jedenfalls nicht. Schon mal besten fuer alle Tips, Heinz. -- Reiseberichte aus Mittel- und Osteuropa: http://www.pahlke-online.de Barrierefreies Webdesign: http://www.Pahlke-KunstWebDesign.de
On Tuesday 06 December 2005 14:16, Heinz W. Pahlke wrote:
RewriteEngine on RedirectMatch permanent (.*)/*\.html$ http://www.meinedomain.de$1.php
1. Du brauchst die RewriteEngine nicht für RedirectMatch. RewriteEngine wird von mod_rewrite benutzt, RedirectMatch von mod_alias, zu dessen Dokumentation Du auch verwiesen seist, um Deine eigentliche Frage zu beantworten. RTFM sollte immer am Anfang stehen: http://httpd.apache.org/docs/2.0/mod/mod_alias.html Torsten
Hallo, On 06-Dec-2005 Torsten Foertsch wrote:
On Tuesday 06 December 2005 14:16, Heinz W. Pahlke wrote:
RewriteEngine _on RedirectMatch permanent (.*)/*\.html$ http://www.meinedomain.de$1.php
1. Du brauchst die RewriteEngine nicht für RedirectMatch. RewriteEngine wird von mod_rewrite benutzt, RedirectMatch von mod_alias, zu dessen
Okay. Dass war mir nicht ganz klar. Ich hatte es anfangs mit mod_rewrite versucht, aber das gefiel mir nicht. Und da dort das RewriteEngine on noetig war, dachte ich, dass es so richtig ist.
Dokumentation Du auch verwiesen seist, um Deine eigentliche Frage zu beantworten.
RTFM sollte immer am Anfang stehen: http://httpd.apache.org/docs/2.0/mod/mod_alias.html
Da und auf www.modrewrite.de und auf diversen anderen Seiten zum Thema habe ich mehr als einmal nachgelesen. Daraus entstand ja dann auch meine RedirectMatch-Regel. Trotzdem komme ich jetzt nicht weiter. Dabei gebe ich ja gerne zu, dass mir zum Apache noch massig Grundlagenwissen fehlt. Ich will ihn aber auch nicht selbst konfigurieren, sondern muss nur das Umlenken loesen. Das andere ueberlasse ich lieber dem Provider. Ich hatte es vorhin mit einem RedirectMatch (.*)/*\.html$ http://www.kontakte-kontakty.de/stats/$1.html im Verzeichnis stats versucht, und jetzt auch noch mit einem RedirectMatch *\.html$ http://www.kontakte-kontakty.de/stats/$1.html im Verzeichnis stats bzw. anstelle html$ auch mit php$, aber das ist eher trial and error. Beste Gruesse, Heinz. -- Reiseberichte aus Mittel- und Osteuropa: http://www.pahlke-online.de Barrierefreies Webdesign: http://www.Pahlke-KunstWebDesign.de
Hallo Heinz, hallo Leute, Am Dienstag, 6. Dezember 2005 14:16 schrieb Heinz W. Pahlke:
ich setze auf einer Website in der .htaccess eine permanente URL-Umleitung mit:
RewriteEngine on RedirectMatch permanent (.*)/*\.html$
BTW: Das /* in dieser RegEx ist wohl unnötig und wird meistens als "0 Vorkommen eines /" interpretiert - oder hast Du Dateien, die irgendwas/.html heißen? Vermutlich nicht.
Da würde ich sicherheitshalber einen Slash vor $1 reinpacken.
Das funktioniert auch, aber leider zu gut, denn damit komme ich auch nicht mehr an die Logdateien in www.meinedomain.de/stats/ heran.
Die Frage ist nun, wie ich dieses Verzeichnis aus dem RedirectMatch ausnehmen kann.
Verwende eine gezieltere RegEx. Ungetestet: ^([^/]*)\.html$ also auch vorn verankert, dann eine beliebige Anzahl Zeichen *außer* einem Slash und dann .html Gruß Christian Boltz -- martins@apollo:~> telnet titanic.st.bauing.tu-darmstadt.de 25 Trying 130.83.84.100... telnet: connect to address 130.83.84.100: Connection refused "titanic..." nimmt keine Mail an, vermutlich ist der Rechner untergegangen. ;-) [Martin Schmitz in suse-linux]
Hallo Christian, On 06-Dec-2005 Christian Boltz wrote:
Hallo Heinz, hallo Leute,
Am Dienstag, 6. Dezember 2005 14:16 schrieb Heinz W. Pahlke:
ich setze auf einer Website in der .htaccess eine permanente URL-Umleitung mit:
RewriteEngine on RedirectMatch permanent (.*)/*\.html$
BTW: Das /* in dieser RegEx ist wohl unnötig und wird meistens als "0 Vorkommen eines /" interpretiert - oder hast Du Dateien, die irgendwas/.html heißen? Vermutlich nicht.
Nein. Warum ich das nicht rausgeworfen habe, weiss ich auch nicht. Ich habe fuer meine RegEx natuerlich Vorlagen aus dem Internet gesucht, sie dann aber anhand http://www.modrewrite.de/mod_rewrite.syntax.phtml bearbeitet.
Da würde ich sicherheitshalber einen Slash vor $1 reinpacken.
Warum? Ich haette es ja auch mit Slash geschrieben, aber da unter anderem auf www.modrewrite.de darauf verzichtet wurde, habe ich ihn auch sicherheitshalber weggelassen.
Das funktioniert auch, aber leider zu gut, denn damit komme ich auch nicht mehr an die Logdateien in www.meinedomain.de/stats/ heran.
Die Frage ist nun, wie ich dieses Verzeichnis aus dem RedirectMatch ausnehmen kann.
Verwende eine gezieltere RegEx.
Ungetestet: ^([^/]*)\.html$ also auch vorn verankert, dann eine beliebige Anzahl Zeichen *außer* einem Slash und dann .html
Okay. Mit Hilfe von www.modrewrite.de glaube ich, zu wissen, was das macht. Aber das greift auch in allen Unterverzeichnissen, und www.meinedomain.de/stats/ soll eben ausgenommen werden. Beste Gruesse, Heinz. -- Reiseberichte aus Mittel- und Osteuropa: http://www.pahlke-online.de Barrierefreies Webdesign: http://www.Pahlke-KunstWebDesign.de
Hallo Heinz, hallo Leute, Am Dienstag, 6. Dezember 2005 16:08 schrieb Heinz W. Pahlke:
On 06-Dec-2005 Christian Boltz wrote:
Hallo Heinz, hallo Leute,
Am Dienstag, 6. Dezember 2005 14:16 schrieb Heinz W. Pahlke:
ich setze auf einer Website in der .htaccess eine permanente URL-Umleitung mit:
RewriteEngine on RedirectMatch permanent (.*)/*\.html$
BTW: Das /* in dieser RegEx ist wohl unnötig und wird meistens als "0 Vorkommen eines /" interpretiert - oder hast Du Dateien, die irgendwas/.html heißen? Vermutlich nicht.
Nein. Warum ich das nicht rausgeworfen habe, weiss ich auch nicht. Ich habe fuer meine RegEx natuerlich Vorlagen aus dem Internet gesucht, sie dann aber anhand http://www.modrewrite.de/mod_rewrite.syntax.phtml bearbeitet.
*g*
Da würde ich sicherheitshalber einen Slash vor $1 reinpacken.
Warum?
Ich haette es ja auch mit Slash geschrieben, aber da unter anderem auf www.modrewrite.de darauf verzichtet wurde, habe ich ihn auch sicherheitshalber weggelassen.
Ich würde sicherheitshalber den Slash reinpacken, weil: - ein zusätzlicher Slash nicht stören dürfte, aber - ein fehlender Slash einen Haufen Ärger machen kann ;-)
Das funktioniert auch, aber leider zu gut, denn damit komme ich auch nicht mehr an die Logdateien in www.meinedomain.de/stats/ heran.
Die Frage ist nun, wie ich dieses Verzeichnis aus dem RedirectMatch ausnehmen kann.
Verwende eine gezieltere RegEx.
Ungetestet: ^([^/]*)\.html$ also auch vorn verankert, dann eine beliebige Anzahl Zeichen *außer* einem Slash und dann .html
Okay. Mit Hilfe von www.modrewrite.de glaube ich, zu wissen, was das macht.
Aber das greift auch in allen Unterverzeichnissen, und www.meinedomain.de/stats/ soll eben ausgenommen werden.
Du willst also alles, auch Unterverzeichnisse, umleiten - außer /stats/?
Das folgende müsste funktionieren, auch wenn ich es nicht besonders
schön finde:
diesmal ist der Bug in Debian. Hat denen diese SuSE-Eigenschaft so gut gefallen? *SCNR* Naja, so gut wie Suse ist Debian naürlich nicht. Suse hat den Bug ja mehrere Monate lang durchgehalten, Debian hat nur 5 Tage geschafft, dann mußten sie sich dem Fix geschlagen geben... Opensourcefrickler halt. [> Christian Boltz und Ratti]
Hallo Christian, On 06-Dec-2005 Christian Boltz wrote:
Du willst also alles, auch Unterverzeichnisse, umleiten - außer /stats/?
Ganz richtig.
Das folgende müsste funktionieren, auch wenn ich es nicht besonders schön finde:
RedirectMatch RedirectMatch permanent (.*)\.html$ http://www.meinedomain.de/$1.php </LocationMatch>
Gibt leider einen Internal Server Error (auch wenn ich das doppelte RedirectMatch loesche). Dein Vorschlag und deine Links haben mich aber auf eine Loesung gebracht, die zu funktionieren scheint: RedirectMatch permanent ^([^/]*)\.html$ http://www.meinedomain.de/$1.php RedirectMatch ^stats/^([^/]*)\.html$ http://www.meinedomain.de/stats/$1.html
Ungetestet: Was passiert, wenn eine URL angefordert wird, die kürzer als /stats/ ist, z. B. /x ?
Das waere kein Problem, weil es nur darum geht, durch die Umstellung auf php nicht die guten Plazierungen besonders bei Google zu verlieren und Besucher, die einzelne Seiten gebookmarkt haben, nicht im Regen stehen zu lassen, wenn die Dateinamen jetzt auf php statt html enden. Kurze Verzeichnisnamen mit html-Dateien gab es aber bisher nicht. Und fuer die Zukunft waere das unerheblich, weil das RedirectMatch da ohnehin keine Rolle spielen wuerde.
Ach ja: Die saubere Lösung wäre eine RewriteRule in Verbindung mit einer negierten RewriteCond (das beherrscht sowas wie "! /stats/") - siehe dazu neben dem Dir schon bekannten Forum http://buecher.lingoworld.de/apache2/showdir.php?id=676 http://buecher.lingoworld.de/apache2/showdir.php?id=669
Sehr interessante Links. Schade dass sie in einem derartig schlechten HTML geschrieben sind, dass sie bei Google offenbar erst ziemlich weit hinten rangieren.
sowie http://localhost/manual/misc/rewriteguide.html (URL Rewriting Guide, URL gilt bei installierter Apache-Doku, ansonsten online nachsehen)
Ich glaube, ich muss mir mal die Einstellungen fuer updatedb ansehen. Die Doku liegt hier unter /srv, wird aber nicht indiziert. Vielen Dank fuer deine Hilfe, Heinz. -- Reiseberichte aus Mittel- und Osteuropa: http://www.pahlke-online.de Barrierefreies Webdesign: http://www.Pahlke-KunstWebDesign.de
Hallo Heinz, hallo Leute, Am Mittwoch, 7. Dezember 2005 10:02 schrieb Heinz W. Pahlke:
On 06-Dec-2005 Christian Boltz wrote:
Du willst also alles, auch Unterverzeichnisse, umleiten - außer /stats/?
Ganz richtig.
Das folgende müsste funktionieren, auch wenn ich es nicht besonders schön finde:
RedirectMatch RedirectMatch permanent (.*)\.html$ http://www.meinedomain.de/$1.php </LocationMatch>
Gibt leider einen Internal Server Error
Seltsam - hat bei mir funktioniert (wenn auch mit anderem Pfad getestet) Was steht denn im ErrorLog? BTW: Das schließende </LocationMatch> fehlt - hast Du das nur in der Mail weggekürzt oder auch bei der Server-Config vergessen?
(auch wenn ich das doppelte RedirectMatch loesche).
Uups, das gehört da auch nicht doppelt hin ;-)
Dein Vorschlag und deine Links haben mich aber auf eine Loesung gebracht, die zu funktionieren scheint: [...]
Dann ist ja gut ;-)
Ungetestet: Was passiert, wenn eine URL angefordert wird, die kürzer als /stats/ ist, z. B. /x ?
Das waere kein Problem, weil es nur darum geht, durch die Umstellung auf php nicht die guten Plazierungen besonders bei Google zu verlieren und Besucher, die einzelne Seiten gebookmarkt haben, nicht im Regen stehen zu lassen, wenn die Dateinamen jetzt auf php statt html enden.
Dann würde ich eher mod_rewrite verwenden und alle Aufrufe intern und nach außen unsichtbar auf die PHP-Scripte umleiten - manche Suchmaschinen mögen PHP und sonstige dynamische Seiten nicht besonders ;-) RewriteEngine on RewriteCond ! -f # aus dem Gedächtnis, soll heißen: # angefragte Datei existiert nicht RewriteCond %{REQUEST_URI} ^(.*)\.html?$ RewriteRule ^([^/]*)\.html? /$1.php?%{QUERY_STRING} Ein fehlender Query-String hat mich schon mal geärgert ("warum kommt der Parameter nicht beim Script an?"), deshalb bau den lieber gleich mit ein. Ach ja: Auf www.Landjugend-Insheim.de/?sl kannst Du die Originalfassung der obigen RewriteRule [1] in Aktion bewundern. Oder glaubt hier jemand ernsthaft, dass ich für jedes Bild in der Galerie eine eigene HTML-Datei schreibe? ;-) Gruß Christian Boltz [1] RewriteRule ^([^/]*)\.html? /index.php?page=$1&%{QUERY_STRING} --
Du testest hflacs ;-) Mit existieren Dateien testen (erwartetes Ergebnis: "geht") ist langweilig. Ich teste goldrichtig. Dazu hat der liebe Gott nämlich die User erschaffen. :-) [> Christian Boltz und Ratti in fontlinge-devel]
Hallo Christian, On 07-Dec-2005 Christian Boltz wrote:
Am Mittwoch, 7. Dezember 2005 10:02 schrieb Heinz W. Pahlke:
On 06-Dec-2005 Christian Boltz wrote:
RedirectMatch RedirectMatch permanent (.*)\.html$ http://www.meinedomain.de/$1.php </LocationMatch>
Gibt leider einen Internal Server Error
Seltsam - hat bei mir funktioniert (wenn auch mit anderem Pfad getestet)
Was steht denn im ErrorLog?
Keine Ahnung. Auf meinem PC habe ich damit ja noch generelle Probleme, komme aber momentan nicht dazu, mich drum zu kuemmern. Also muss ich es auf dem Server testen, auf den bzw. dessen Apache-Logs ich aber keinen Zugriff habe.
BTW: Das schließende </LocationMatch> fehlt - hast Du das nur in der Mail weggekürzt oder auch bei der Server-Config vergessen?
Habe ich versehentlich in der Mail geloescht.
Dann würde ich eher mod_rewrite verwenden und alle Aufrufe intern und nach außen unsichtbar auf die PHP-Scripte umleiten - manche Suchmaschinen mögen PHP und sonstige dynamische Seiten nicht besonders ;-)
Wuesste eigentlich nicht, welche wichtigen Suchmaschinen auf php schlecht zu sprechen waeren. Mit mod_rewrite hatte ich anfangs probiert, aber mit gefiel eben nicht, dass die Seiten dann fuer die Browser/Spider HTML sind und als solche gebookmarked werden. Vielleicht ist meine Vorsicht uebertrieben, aber ich moechte moeglichst unabhaengig von solchen Dingen wie mod_rewrite bleiben. Und ein fehlender RedirectMatch wirkt sich im Laufe der Zeit immer weniger aus.
RewriteEngine on RewriteCond ! -f # aus dem Gedächtnis, soll heißen: # angefragte Datei existiert nicht RewriteCond %{REQUEST_URI} ^(.*)\.html?$ RewriteRule ^([^/]*)\.html? /$1.php?%{QUERY_STRING}
Ein fehlender Query-String hat mich schon mal geärgert ("warum kommt der Parameter nicht beim Script an?"), deshalb bau den lieber gleich mit ein.
Ach ja: Auf www.Landjugend-Insheim.de/?sl kannst Du die Originalfassung der obigen RewriteRule [1] in Aktion bewundern. Oder glaubt hier jemand ernsthaft, dass ich für jedes Bild in der Galerie eine eigene HTML-Datei schreibe? ;-)
Da du bestimmt viel zu viel freie Zeit hast ;-))) Beste Gruesse, Heinz.
participants (3)
-
Christian Boltz
-
Heinz W. Pahlke
-
Torsten Foertsch