AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein ModRewrite: Wie Weiterleitung von ".html" auf "/"?
Thema durchsuchen
Ansicht
Themen-Optionen

ModRewrite: Wie Weiterleitung von ".html" auf "/"?

Ein Thema von Matze · begonnen am 31. Jan 2009 · letzter Beitrag vom 31. Jan 2009
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

ModRewrite: Wie Weiterleitung von ".html" auf &quo

  Alt 31. Jan 2009, 15:34
Hi zusammen,

ich verzweifle wieder mal vor diesen regulären Ausdrücken bzw. mit .htaccess allgemein.

Ich habe eine URL wie http://domain.tld/.../category/id1/name.html, die ich weiterleiten möchte auf http://domain.tld/index.php?page=category&id=1.

Mein Versuch war neben unzähligen anderen folgender:

Code:
RewriteCond %{REQUEST_URI} ^(.*)/category/id([0-9]+)/(.*)\.html$ [NC]
RewriteRule . index.php?page=category&id=$2 [R=301,L]
Doch das leitet mir auf URLs weiter, in denen der absolute Serverpfad steckt und ähnliches. Eigentlich muss ich die URL oben auch nicht in 3 Variablen "zerlegen", da reicht mir die ID.

Ich möchte, dass die alte URL von Google & Co. verschwindet. Die neuen, die ich auf der Website anzeige haben das Format: http://domain.tld/.../category/id1/name/.
Diese leite ich in der .htaccess-Datei auf die korrekten Dateien weiter, weshalb ich diesen Pfad vermutlich nicht oben als Ziel angeben kann. Schön wäre natürlich, wenn das ginge und direkt auf den neuen Pfad weitergeleitet wird, sodass in der Adresszeile auch der neue beim Aufruf des alten steht.

Wie mache ich es richtig?

Grüße, Matze
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#2

Re: ModRewrite: Wie Weiterleitung von ".html" auf

  Alt 31. Jan 2009, 16:45
Also ich vgerwende weiterleitungen immer ungefähr so:

RewriteRule ^activate/([^/]+) index.php?p=activate&h=$1 [NC,L]

Deine würde ich dementsprechend anpassen:

RewriteRule ^([^/]+)/([^/]+)/name.html index.php?page=$1&id=$2 [NC,L]
( $1 = Kategorie, $2 = die ID )


So funktionierts bei mir lokal.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: ModRewrite: Wie Weiterleitung von ".html" auf

  Alt 31. Jan 2009, 16:55
Hallo Michael,

gut danke, damit könnte ich leben. Es wird halt nicht die URL in der Adressleiste angepasst.

Was mir aber sehr wichtig wäre, eine 301-Meldung zurückzugeben. Nicht dass im schlimmsten Fall Google meine Seite aufgrund von Mehrfachinhalten sperrt. Leider wird in der folgenden Lösung wieder der absolute Pfad mit in die zu weiterleitende URL eingefügt:

Code:
RewriteRule ^category/id([0-9]+)/([a-z_]+)\.html index.php?page=category&id=$1 [NC,L,R=301]
Weißt du dafür auch eine Lösung?

Grüße, Matze
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#4

Re: ModRewrite: Wie Weiterleitung von ".html" auf

  Alt 31. Jan 2009, 17:01
Stehen noch andere RewriteRules Vor bzw. über dieser von dir gezeigten Rule?

Weil meine Erfahrung ist, dass man die "normalen" Rules (ohne ([^/]+) usw) immer UNTER
Rules MIT ([^/]+) schreiben sollte.

Aber leider kann ich dir nicht mehr weiter helfen.
Denn ich bin in diesem Thema selber noch ein Anfänger.

Was meinst du mit URL angepasst?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

Re: ModRewrite: Wie Weiterleitung von ".html" auf

  Alt 31. Jan 2009, 17:07
Wenn du es rein über die htaccess lösen willst, kann ich dir auch nicht helfen, denn mit der steh ich auch regelmäßig auf dem Kriegspfad, wenn es um solche "komplexen" Umleitungen geht.

Ich habe mir auf meiner Seite damit beholfen, dass ich eine Umleitung mit PHP erstellt habe. Als ich die URLs von den Blogeinträgen geändert habe, habe ich in der für den Blog zuständigen Datei einfach per Regexp überprüft, über welche URL die Seite aufgerufen wurde, und dann ggf. eine Umleitung erstellt:
Code:
// 301-Weiterleitung zu URL
   function redirect($url) {
       header("HTTP/1.1 301 Moved Permanently");
       header("Location: $url");
   }
// 301-Weiterleitung zu relativem Pfad
   function redirect2($file) {
       header("HTTP/1.1 301 Moved Permanently");
       $host = $_SERVER['HTTP_HOST'];
       header("Location: http://$host$url");
   }
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

Re: ModRewrite: Wie Weiterleitung von ".html" auf

  Alt 31. Jan 2009, 17:26
Warum übergibst Du in der zweiten Funktion den Parameter $file, der nicht genutzt wird und nutzt eine Variable $url, die nirgends definiert ist?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

Re: ModRewrite: Wie Weiterleitung von ".html" auf

  Alt 31. Jan 2009, 17:31
Zitat von Die Muhkuh:
Warum übergibst Du in der zweiten Funktion den Parameter $file, der nicht genutzt wird und nutzt eine Variable $url, die nirgends definiert ist?
Gute Frage . Wahrscheinlich habe ich den Code aus der 1. Funktion kopiert und vergessen den Namen des Parameters anzupassen. Danke für den Hinweis.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: ModRewrite: Wie Weiterleitung von ".html" auf

  Alt 31. Jan 2009, 19:59
Hi

@Michael: Mit "anpassen" meinte ich, dass ich per PHP alle Links eines bestimmten Typs (zu Übersichtsseiten) geändert habe.

Und Weiterleiten muss ich nicht unbedingt, das wäre das kleinste Problem, ich möchte nur, dass Google auch mitbekommt, dass die bisherigen Links nicht mehr existieren und so nach und nach aus dem Suchindex fliegen. Solche generellen Weiterleitungen mache ich prinzipiell über htaccess, da so viel schneller und unauffälliger weitergeleitet wird und ich zusätzlich den Suchmaschinen mitteilen kann, was los ist.
Edit: ok ich sehe gerade an obigem Code, dass diese Rückgabewerte auch per PHP realisierbar sind.

Aber ich probiere nochmals etwas herum, denke aber nicht, dass es an der Reihenfolge liegt.

Grüße, Matze

Edit 2: So funktioniert die Weiterleitung. Vielleicht reicht mir das schon:

Code:
RewriteRule ^category/id([0-9]+)/([a-z_]+)\.html index.php?page=category&id=$1 [R=301,L]
Edit 3: Hm geht doch nicht. Hatte die alte Regel noch drinnen und die bewirkte die Anzeige.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz