Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

mod_rewrite frage

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
Metaman
PostRank 7
PostRank 7
Beiträge: 602
Registriert: 17.04.2004, 07:37
Wohnort: Wittenburg (Mecklenburg)

Beitrag von Metaman » 11.05.2006, 11:36

ich steh gerade etwas aufdem Schlauch.
und zwar hab ich mein phpbb runtergeschmissen und an dessen Stelle ein anderes Forum installiert und auch schon die Beiträge übernommen.

da das PHPBB schon einige bei google gelistete Beiträge hatte leite Links mit einer htaccess um

Code: Alles auswählen

RewriteEngine on
RewriteCond %{REQUEST_URI} (.*)$
RewriteRule viewforum.php(.*) /index.php$1 [R]
RewriteRule viewtopic.php(.*) /ndex.php$1 [R]
die Index. ist dann so aufgebaut

Code: Alles auswählen

if($f){
header("Status: 301 Moved Permanently");
header("Location:forum.php?req=main&id=$f");
exit;
}

if($t){
header("Status: 301 Moved Permanently");
header("Location:forum.php?req=thread&id=$t");
exit;
}
if($p){
header("Status: 301 Moved Permanently");
header("Location:forum.php?req=thread&postid=$p");
exit;
}
header("Location:forum.php");
Klappt soweit auch prima, nur sind vom phpbb noch andere Dateien gelistet die ich jetzt gerne auf die index.php umleiten möchte die ich aber nicht alle einzeln definieren will.

Also nach diesen 2 Rewrite Regeln brauch ich noch eine Dritte
die alles auf die index.php umleitet
außer die index.php, und die forum.php

Anzeige von ABAKUS

von Anzeige von ABAKUS »


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

haha
PostRank 9
PostRank 9
Beiträge: 1065
Registriert: 03.04.2006, 18:08
Wohnort: Bi Hamborg

Beitrag von haha » 12.05.2006, 10:46

> RewriteEngine on

Hier fehlt vermutlich [url=file:///D:/http/apache2/manual/mod/mod_rewrite.html#rewritebase]RewriteBase[/url].

> RewriteCond %{REQUEST_URI} (.*)$

Das macht keinen Sinn. RewriteCond ist dazu gedacht, eine Bedingung (Cond = condition) einzubauen, die erfüllt sein muss, damit die nachfolgende RewriteRule-Zeile ausgeführt wird. (.*)$ passt auf alles, Du kannst die Zeile also genauso gut weglassen.
Du verwendest das gefilterte Stückchen auch nicht weiter, die Klammern wären also auch überflüssig (wenn nicht eh schon die ganze Zeile überflüssig wäre).

> RewriteRule viewforum.php(.*) /index.php$1 [R]
> RewriteRule viewtopic.php(.*) /ndex.php$1 [R]

Nur als Anmerkung: Für die zweite Zeile gilt Dein RewriteCond von oben schon nicht mehr.

> if($f){
> header("Status: 301 Moved Permanently");
> header("Location:forum.php?req=main&id=$f");

Location benötigt eine vollständige URL, also in diesem Fall beginnend mit http://. Ich weiß nicht, ob PHP das selbst korrigiert (PHP korrigiert ja viele Schlampereien), aber schöner wäre es, wenn's gleich richtig im Code stehen würde.

Wo kommt $f her, steht das in der URL? Dann benutze $_GET["f"] und schalte register_globals, also die Übernahme von URL-Parametern in eigene PHP-Variablen ab, Du reißt Dir damit unter Umständen ein Sicherheitsloch in Deine Skripte.

Zum Thema:
Du möchtest also viewtopic.php bzw. viewforum.php mit Parameter…
- f in forum.php?req=main&id=[f]
- t in forum.php?req=thread&id=[t]
- p in forum.php?req=thread&postid=[p]
- ohne Parameter in forum.php
… umwandeln?

Mach's so:

RewriteCond %{QUERY_STRING} (^|&|;)f=([^;&]*)
RewriteRule view(forum|topic)\.php forum.php?req=main&id=%2 [R=301,L]

RewriteCond %{QUERY_STRING} (^|&|;)t=([^;&]*)
RewriteRule view(forum|topic)\.php forum.php?req=thread&id=%2 [R=301,L]

RewriteCond %{QUERY_STRING} (^|&|;)p=([^;&]*)
RewriteRule view(forum|topic)\.php forum.php?req=thread&postid=%2 [R=301,L]

RewriteCond %{QUERY_STRING} ^$
RewriteRule view(forum|topic)\.php forum.php

Eventuell kann man die vier Anweisungen auch noch verfeinern, aber ich kenne die phpbb-URLs nicht.

Die index.php, in der Du bis jetzt die eigentliche Umwandlung vornimmst, kannst Du in jedem Fall löschen. Durchaus geschickt könnte es auch sein, die index.php durch forum.php zu ersetzen und somit die URL zu verkürzen (nicht, dass Du eine hässliche Konstruktion in der Art /forum/forum.php benutzt). Die obigen Regeln müssten dann angepasst werden.

Es wäre auch nicht verkehrt, statt der eh für diesen Zweck nicht gedachten URL-Parameter auf Pfade umzustellen, also die phpbb-URLs in forum/[thread]/[posting]/ o. ä. umzuwandeln und anschließend forum/[thread]/[posting]/ in forum.php?postid=usw.
Klappt soweit auch prima, nur sind vom phpbb noch andere Dateien gelistet die ich jetzt gerne auf die index.php umleiten möchte die ich aber nicht alle einzeln definieren will.

Also nach diesen 2 Rewrite Regeln brauch ich noch eine Dritte
die alles auf die index.php umleitet
außer die index.php, und die forum.php
Welche "anderen Dateien"? Eine Weiterleitung, die alles plattmacht und auf eine Indexseite leitet, ist selten eine gute Idee.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag