Seite 1 von 2
Mod Rewrite Frage
Verfasst: 03.02.2009, 20:01
von darkeye
Hallo,
ich benutze auf meiner Seite folgenden Mod_Rewrite Code in meiner htaccess:
RewriteRule ^(.*).htm$ $1.php
Jetzt möchte ich, dass sich dieser Code NUR auf Dateien des Root-Verzeichnisses und auf Dateien eines bestimmten Ordners bezieht. Wie mach ich das nun, kann mir einer helfen?
Verfasst:
von
Hochwertiger Linkaufbau bei ABAKUS:
- Google-konformer Linkaufbau
- nachhaltiges Ranking
- Linkbuilding Angebote zu fairen Preisen
- internationale Backlinks
Wir bieten
Beratung und
Umsetzung.
Jetzt anfragen:
0511 / 300325-0
Verfasst: 03.02.2009, 21:48
von chrizz
du legst ins Root diese o.g. htaccess. Die Ordner, bei denen das nicht so gehandhabt werden soll, fütterst du mit einer htaccess, inder RewriteEngine OFf steht... das sollte eigentlich klappen...
Verfasst: 03.02.2009, 22:27
von darkeye
Hallo, danke für die ANtwort. Aber das klappt leider nicht, da ich nämlich für den speziellen Ordner eine htaccess mit Mod_Rewrite benutze. Um genauer zu sein: Ich habe ein Forum im Ordner "/forum/" im Root habe ich daher folgende htacess:
Code: Alles auswählen
RewriteEngine on
#if forum is in /forum/ replace with RewriteBase /forum/
RewriteBase /forum/
RewriteRule ^(.*)-f([0-9]*)/(.*)-t([0-9]*)-s([0-9]*).html viewtopic.php?f=$2&t=$4&start=$5&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/(.*)-t([0-9]*).html viewtopic.php?f=$2&t=$4&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/index-s([0-9]*).html viewforum.php?f=$2&start=$3&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/ viewforum.php?f=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*) viewforum.php?f=$2&%{QUERY_STRING} [L]
Jetzt möchte ich aber noch zusätzlich folgenden Code benutzen, der für ALLE andren Dateien gilt, AUSSER für das Forum:
Wie mach ich da? Hab schon einiges ausprobiert, aber bin kein mod_rewrite Profi...
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
Verfasst: 03.02.2009, 22:34
von ins0
Zum auschließen von Ordnern der Rewirte Regel in die Htaccess:
Code: Alles auswählen
RewriteCond %{REQUEST_URI} !^/(1ordner|2ordner|3ordner)
RewriteRule ^(.*).htm$ $1.php
grüße ins0
Verfasst: 04.02.2009, 12:25
von darkeye
Hmm, wie muss denn dann die htaccess aussehen? Also dieser Code hier klappt NICHT:
Code: Alles auswählen
RewriteEngine on
#if forum is in /forum/ replace with RewriteBase /forum/
RewriteBase /forum/
RewriteRule ^(.*)-f([0-9]*)/(.*)-t([0-9]*)-s([0-9]*).html viewtopic.php?f=$2&t=$4&start=$5&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/(.*)-t([0-9]*).html viewtopic.php?f=$2&t=$4&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/index-s([0-9]*).html viewforum.php?f=$2&start=$3&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/ viewforum.php?f=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*) viewforum.php?f=$2&%{QUERY_STRING} [L]
RewriteCond %{REQUEST_URL} !^/(forum)
RewriteRule ^(.*).htm$ $1.php
Verfasst: 04.02.2009, 15:01
von Mork vom Ork
darkeye hat geschrieben:RewriteRule ^(.*).htm$ $1.php
Das ist nicht sinnvoll. Wenn du sämtliche htm-Dateien mittels PHP verwursten willst, dann weise den Apache direkt an, dies zu tun, anstatt erst die URL zu ändern und ihn anzuweisen, PHP auf die geänderte URL anzuwenden. Wenn du dann auch noch anfängst, da Ausnahmen reinzupfriemeln, geht das völlig in die Richtung Ja-aber-wenn-vielleicht-dann-doch-oder-auch-nicht.
Füge in die oberste .htaccess die Zeile
AddHandler application/x-httpd-php htm
ein. Das ist der vorgesehene Weg für diese Aufgabe, RewriteRule & Co sind dafür restlos fehl am Platze.
Verfasst: 04.02.2009, 15:11
von darkeye
Mork vom Ork hat geschrieben:Füge in die oberste .htaccess die Zeile
AddHandler application/x-httpd-php htm
ein.
Habe ich gemacht. Nun sieht die htaccess so aus:
Code: Alles auswählen
AddHandler application/x-httpd-php htm
RewriteEngine on
#if forum is in /forum/ replace with RewriteBase /forum/
RewriteBase /forum/
RewriteRule ^(.*)-f([0-9]*)/(.*)-t([0-9]*)-s([0-9]*).html viewtopic.php?f=$2&t=$4&start=$5&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/(.*)-t([0-9]*).html viewtopic.php?f=$2&t=$4&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/index-s([0-9]*).html viewforum.php?f=$2&start=$3&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/ viewforum.php?f=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*) viewforum.php?f=$2&%{QUERY_STRING} [L]
ErrorDocument 404 http://www.chaoskatzen.de/forum
Es hat sich aber immer noch nix geändert. Kannst ja mal selbst gucken unter chaoskatzen.de
Das Forum klappt einwandfrei, nur die Menülinks auf der Hauptseite klappen nicht.
Verfasst: 04.02.2009, 15:51
von Mork vom Ork
darkeye hat geschrieben:Habe ich gemacht. […] Es hat sich aber immer noch nix geändert. Kannst ja mal selbst gucken unter chaoskatzen.de
Dein Problem ist nicht, dass da kein PHP-Code ausgeführt würde, sondern dass sämtliche URLs mit Ausnahme von /krankheiten auf das Board umgeleitet werden. Rufe ich /haltung/erziehung.html auf, lande ich unter /forum/, rufe ich /erstekatze/vorbereitung.html auf, lande ich unter /forum/ usw.
Deine .htaccess ist an zwei bzw. drei Stellen falsch:
RewriteEngine on
#if forum is in /forum/ replace with RewriteBase /forum/
RewriteBase /forum/
RewriteBase gibt den Pfad zur .htaccess an, nichts anderes; liegt diese .htaccess unter /.htaccess, gehört da
RewriteBase / rein.
Davon abgesehen gehört das gesamte Rewrite-Gedöns, dass du da hast, nicht in /.htaccess, sondern in /forum/.htaccess - und da wäre dann auch
RewriteBase /forum/ richtig.
Das ist ganz großer Bockmist.
Erstens darfst du Besucher gerne darüber informieren, dass das, was sie aufgerufen haben, bei dir nicht existiert. Das bedeutet ja nicht, dass du ihnen bei dieser Fehlermeldung keine weitere Hilfestellung geben dürftest. Aber sie einfach kommentarlos ins Board zu kippen, ist schlichtweg unklug.
Wie unklug das ist, erlebst du möglicherweise gerade selbst: Anstatt sofort zu sehen, dass die statischen Seiten beinahe alle nicht erreichbar sind, landest du jedesmal im Board und wunderst dich.
Zweitens unterdrückst du mit der Angabe einer absoluten URL auch protokollseitig jedwede Fehlermeldung an den Client. Wenn Herr Googlebot vorbeikommt und nach blafaselgnuwutz fragt, dann antwortest du ihm „Ja, habe ich, findest du unter /forum“. Ist das richtig? Nein.
Tu' dir also selbst einen Gefallen, schreibe eine ordentliche Fehlerseite und setze sie mit
ErrorDocument 404 /fehler404.html ein. Aber nicht so wie jetzt.
Verfasst: 04.02.2009, 16:10
von darkeye
Danke für deine Meinungen, aber so klappt das nicht.
Wenn ich folgenden Code in die /forum/.htaccess einfüge,
Code: Alles auswählen
RewriteEngine on
#if forum is in /forum/ replace with RewriteBase /forum/
RewriteBase /forum/
RewriteRule ^(.*)-f([0-9]*)/(.*)-t([0-9]*)-s([0-9]*).html viewtopic.php?f=$2&t=$4&start=$5&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/(.*)-t([0-9]*).html viewtopic.php?f=$2&t=$4&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/index-s([0-9]*).html viewforum.php?f=$2&start=$3&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*)/ viewforum.php?f=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-f([0-9]*) viewforum.php?f=$2&%{QUERY_STRING} [L]
... kommen wieder nur 404 Meldungen, diesmal sogar im Forum.
Und auch wenn folgenden Code in die /.htaccess eingebe:
... kommen auch 404 Meldungen wenn man auf die Menü-Links klickt.
Auf der Hauptseite arbeite ich mit php und include Dateien, deshalb wende ich ja "RewriteRule ^(.*).htm$ $1.php" an.
Man man man, ich komm einfach nicht weiter

Verfasst: 04.02.2009, 17:11
von Mork vom Ork
darkeye hat geschrieben:Wenn ich folgenden Code in die /forum/.htaccess einfüge,
Code: Alles auswählen
RewriteEngine on
#if forum is in /forum/ replace with RewriteBase /forum/
RewriteBase /forum/
RewriteRule ^(.*)-f([0-9]*)/(.*)-t([0-9]*)-s([0-9]*).html viewtopic.php?f=$2&t=$4&start=$5&%{QUERY_STRING} [L]
[..]
... kommen wieder nur 404-Meldungen, diesmal sogar im Forum.
Interessant. Was steckt eigentlich in /forum2/?
Und auch wenn folgenden Code in die /.htaccess eingebe:
... kommen auch 404-Meldungen wenn man auf die Menü-Links klickt.
1. Es wäre schön, wenn du erstmal die ErrorDocument-Zeile entsorgen würdest. Es ist nervig, beim Probieren immer wieder dieselbe URL eintippen zu müssen, weil man ständig in /forum landet.
2. Wenn du mit AddHandler arbeitest, müssen die Dateien auch die jeweilige Endung haben. Ich hatte deine Ausführungen falsch verstanden und dachte, du wolltest .htm-Dateien durch PHP jagen.
3. Deine URLs enden auf .html, nicht wie von dir in deinem RewriteRule-Versuch angegeben, auf .htm. Entsprechend müsste es
AddHandler application/x-httpd-php html lauten und, gemäß 2., die Dateien zB von /haltung/erziehung.php in /haltung/erziehung.html umbenannt werden.
Am einfachsten wäre es natürlich, du würdest sie direkt mit /haltung/erziehung.php aufrufen, denn einen Vorteil hast du von der Endung .html nicht (daher auch mein Missverständnis unter 2).
Verfasst: 04.02.2009, 17:55
von darkeye
Coooool, danke, hat geklappt!

Sicherheit?
Verfasst: 11.02.2009, 19:22
von Sefron
Welche Sicherheitsrisiken birgt die Aktivierung von ModRewrite ganz genau?
Freundlichen Gruss
Re: Sicherheit?
Verfasst: 11.02.2009, 20:58
von Mork vom Ork
Sefron hat geschrieben:Welche Sicherheitsrisiken birgt die Aktivierung von ModRewrite ganz genau?
Welche Risiken existieren, hängt davon ab, welche Risiken du einbaust und wie geschickt du dich dabei anstellst. mod_rewrite macht alleine exakt gar nichts, jegliche Funktion muss von dir programmiert werden (wenn man das erstellen von Mustern und Regeln als Programmieren bezeichnen möchte).
Verfasst: 12.02.2009, 13:22
von Sefron
Okay, dann frag ich nun so:
"In welchen programmiertechnischen Bereiche muss ich aufpassen, dass ich keine Sicherheitslücken öffne, weil ich nun ModRewrite aktiviert habe?"
Freundlichen Gruss,
Sefron
Verfasst: 12.02.2009, 14:02
von Mork vom Ork
Sefron hat geschrieben:Okay, dann frag ich nun so:
"In welchen programmiertechnischen Bereiche muss ich aufpassen, dass ich keine Sicherheitslücken öffne, weil ich nun ModRewrite aktiviert habe?"
Das lässt sich so pauschal wirklich nicht sagen. Auf die Frage, was einem mit einem Auto alles Schlimmes passieren kann, dürftest du letztlich auch keine andere Antwort bekommen als „Das hängt davon ab, wie du fährst, wohin du fährst, wann du fährst“. Das Aufzählen sämtlicher Möglichkeiten, irgendwo gegen-, rein- oder drüberzufahren, bringt dich nicht weiter, weil doch immer irgendwas fehlen wird. Einziger Rat: Aufpassen, nachdenken, was man tut, und nicht blindlings drauflosbrettern.
Aber vielleicht beruhigt dich ja die Einschätzung, dass zu den wahrscheinlichsten Katastrophen im Falle mod_rewrite das Erzeugen einer Endlosschleife gehören dürfte - und die werden in der Regel durch mod_rewrite oder den Browser irgendwo zwischen der zwanzigsten und hundertsten Umdrehung abgewürgt.