zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden mod_rewrite

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 29.03.2009, 11:09
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 06.10.2007
Ort: Rheinland-Pfalz
Beiträge: 326
darkiop wird schon bald berühmt werden
Frage mod_rewrite

Hallo zusammen,

bräuchte Hilfe bei der Zusammenstellung der mod_rewrite Regeln folgender Seite: Impressionen | Historisches Dorffest Steinweiler 29.05.2009 - 01.06.2009

Bisher sieht das ganze so aus:

Code:
RewriteEngine On

RewriteCond %{HTTP_HOST} ^historisches-dorffest\.de$ [NC]
RewriteRule ^(.*)$ http://www.historisches-dorffest.de/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^dorffest-steinweiler\.info$ [NC]
RewriteRule ^(.*)$ http://www.dorffest-steinweiler.info/$1 [R=301,L]

RewriteBase /
RewriteRule ^([^*]+)\.html$ index.php?site=$1 [NC]
aus historisches-dorffest.de wird www. historisches-dorffest.de
und aus dorffest-steinweiler.info wird www. dorffest-steinweiler.info
aus /impressionen.html wird index.php?site=impressionen

Folgendes hätte ich gerne:

aus historisches-dorffest.de und www. historisches-dorffest.de wird www. dorffest-steinweiler.info

und die Seiten sollten über /impressionen.html und /impressionen erreichbar sein. Verlinken würde ich dann nur die /impressionen, die .html bleiben nur noch für denn Fall das schon jemand Bookmarks gesetzt hat.

(impressionen = nur ein Beispiel, soll für alle Seiten funktionieren)

Im vorraus schoneinmal vielen Dank und einen schönen Sonntag!
__________________
Mein Blog | Hier im Forum: FAQ

Viele Grüße, Thorsten

Geändert von darkiop (29.03.2009 um 11:16 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 29.03.2009, 11:20
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Code:
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.dorffest-steinweiler\.info$
RewriteRule ^(.*)$ http://www.dorffest-steinweiler.info/$1 [R=301,L]

RewriteRule ^([^*]+)(\.html)?$ index.php?site=$1 [NC]
Das wäre mein Ansatz, alles was nicht deiner gewünschten Domain entspricht, auf diese umleiten.
Bei der letzten RewriteRule habe ich nur das .html optional gemacht, da solltest du auf das NC verzichten, sonst hast du jede Menge mögliche Kombinationen um an deine Seite zu kommen. Im Gegensatz zum host, wird im Pfad Groß- und Kleinschreibung unterschieden.

Ich würde dir eigentlich folgende Regel empfehlen und den Rest mit PHP erledigen:
Code:
RewriteRule .* index.php/$0
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 29.03.2009, 12:17
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.733
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Für kanonische Pfadnamen ohne .html:
Code:
RewriteRule ^(.+)\.html$ /$1 [L,R=301]
__________________
Markus Wulftange
Mit Zitat antworten
  #4 (permalink)  
Alt 29.03.2009, 12:30
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 06.10.2007
Ort: Rheinland-Pfalz
Beiträge: 326
darkiop wird schon bald berühmt werden
Standard

Hi Inta,

Zitat:
Zitat von inta Beitrag anzeigen
Code:
RewriteRule ^([^*]+)(\.html)?$ index.php?site=$1 [NC]
das hatte ich auch schon getestet, allerdings bekomme ich dann einen 404. Siehe Include-Skript unten.

Zitat:
Zitat von inta Beitrag anzeigen
Ich würde dir eigentlich folgende Regel empfehlen und den Rest mit PHP erledigen:
Code:
RewriteRule .* index.php/$0
Wir würde das dann in etwa ausehen?

Hier das verwendete Includeskript (von Gumbo)

PHP-Code:
<?php
if (isset($_GET['site'])) {
   
htmlspecialchars($_GET['site']);
}
if (!isset(
$_GET['site'])) {
   
$site 'impressionen';
} else {
   
$site basename($_GET['site']);
   if (
$site !== $_GET['site']) {
     
// ungültiger Wert
     // Fehlerbehandlung
   
}
}
$absPath realpath('includes/'.$site.'.inc.php');
if (!
$absPath) {
   echo 
"<p class=\"warnung\"><strong>404</strong><br />Datei nicht gefunden!</p>\n";
} else {
   include 
$absPath;
}  
?>
__________________
Mein Blog | Hier im Forum: FAQ

Viele Grüße, Thorsten

Geändert von darkiop (29.03.2009 um 12:34 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 29.03.2009, 14:12
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.733
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Was soll eigentlich das [^*]?

Probier mal Folgendes:
Code:
RewriteCond %{THE_REQUEST} ^GET /([^/?]*/)*[^/?]+\.html[\s?]
RewriteRule ^(.+)\.html$ /$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Der angefragte URL-Pfad steht dann (samt Query) in der $_SERVER['REQUEST_URI']-Variable.
__________________
Markus Wulftange

Geändert von Gumbo (30.03.2009 um 15:45 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 29.03.2009, 19:00
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Zitat:
Zitat von darkiop Beitrag anzeigen
Wir würde das dann in etwa ausehen?
Wenn du das Skript so belassen willst wie es ist, dann kannst du folgende Regel verwenden:
Code:
RewriteRule .* index.php/?site=$0
Bei dieser Regel:
Code:
RewriteRule .* index.php/$0
müsstest du per „PATH_INFO“ auf den Pfad zugreifen, da keine Get-Variable mit den Informationen befüllt wird. Der Grund für diese Variante ist bei mir damals ein Server gewesen, auf dem ich kein Mod Rewirte nutzen konnte, da sieht „index.php/foobar/“ zumindest noch etwas sauberer aus als „index.php?var=foobar“.

Um den Fall abzufangen, dass die Endung „.html“ in der URL anhängt, brauchst du keine Hilfe oder? Das kannst du z.B. mit „substr“ und einem einfachen If-Konstrukt prüfen. Ich würde in dem Fall ein „301 Moved Permanently“ Header senden.
Mit Zitat antworten
  #7 (permalink)  
Alt 30.03.2009, 12:56
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 06.10.2007
Ort: Rheinland-Pfalz
Beiträge: 326
darkiop wird schon bald berühmt werden
Standard

Guten Morgen,

komme wohl erst Morgenfrüh zum testen. Danke aber schoneinmal für die Vorschläge.

Die URL-Umleitung auf www. dorffest-steinweiler.info funktioniert schon - die Seitenaufrufe über name.html und /name bzw. eine Weiterleitung von name.html auf /name bekommen wir dann auch noch hin
__________________
Mein Blog | Hier im Forum: FAQ

Viele Grüße, Thorsten
Mit Zitat antworten
  #8 (permalink)  
Alt 06.04.2009, 20:47
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 06.10.2007
Ort: Rheinland-Pfalz
Beiträge: 326
darkiop wird schon bald berühmt werden
Standard

Hallo, wollte nur bescheid geben das mir momentan die Zeit etwas fehlt für die mod_rewrite Sache. Hab das Thema nicht vergessen, werde mich nochmal melden. Hab zur Zeit noch ein paar andere Baustellen die ich wichtiger einstufe
__________________
Mein Blog | Hier im Forum: FAQ

Viele Grüße, Thorsten
Mit Zitat antworten
Antwort

Stichwörter
.htaccess, mod_rewrite, rewriteengine, weiterleitung

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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



Alle Zeitangaben in WEZ +2. Es ist jetzt 07:41 Uhr.