mod_rewrite: RewriteRule für Druckansicht

27apricot

Erfahrenes Mitglied
Hallo,

leider habe ich dazu nix gefunden – auch weil ich nicht weiß, wonach ich suchen muss.

Ich habe für mein CMS verschiedene RewriteRules geschrieben. So wird beispielsweise
»domain.tld/seitenname« auf »domain.tld/?inhalt=seitenname« und
»domain.tld/seitenname/archiv/9« auf »domain.tld/?inhalt=seitenname&archiv=1&id=9«
weitergeleitet.

Jetzt habe ich eine Druckansicht eingebaut. Dabei wird »/druckansicht« an die aktuelle URL angehängt und soll übersetzt werden in »&druckansicht=1«. So wie ich es vermag, kann ich diese Regel nur für jede andere geschriebene Regel einzeln hinzufügen, muss also für die oben genannten jeweils die mit der Druckansicht hinzufügen.

Kann ich diese Übersetzung aber auch in EINER Regel formulieren, die immer funktioniert?

Versucht habe ich, folgende Regel vor alle anderen zu schreiben, die dann für alle Seiten gelten sollte (außer der Startseite ohne weitere Übergabevariablen):
Code:
RewriteRule ^(.+)/druckansicht[/]*$ $1&druckansicht=1
Da kommt aber der Fehler 404.

Danke im Voraus!

Schöne Grüße,
27apricot.
 
Hallo Gumbo,

vielen Dank. Funktioniert aber leider auch nicht. Weder vor noch nach den anderen Regeln.

Schöne Grüße:
27apricot.
 
Die stehen in der .htaccess und die sieht so aus:

Code:
RewriteEngine on
Options +FollowSymlinks 
RewriteBase /

# erste Regel gedacht für die Druckansicht der Startseite (die funktioniert auch):
RewriteRule ^druckansicht[/]*$				index.php?druckansicht=1
# das ist die, die nicht funktioniert:
RewriteRule ^(.+)/druckansicht/?$			/$1?druckansicht=1   [QSA]

# die anderen Regeln:
RewriteRule ^([0-9a-z_]+)[/]*$ 				index.php?seite=$1
RewriteRule ^([0-9a-z_]+)/default[/]*$ 			index.php?seite=$1&incl=default
RewriteRule ^([0-9a-z_]+)/offset_([0-9]+)[/]*$ 		index.php?seite=$1&offset=$2
RewriteRule ^([0-9a-z_]+)/([0-9]+)[/]*$ 		index.php?seite=$1&id=$2
RewriteRule ^([0-9a-z_]+)/archiv[/]*$ 			index.php?seite=$1&archiv=1
RewriteRule ^([0-9a-z_]+)/archiv/([0-9]+)[/]*$ 		index.php?seite=$1&archiv=1&id=$2
RewriteRule ^([0-9a-z_]+)/kat_([0-9]+)[/]*$ 				index.php?seite=$1&kat=$2
RewriteRule ^([0-9a-z_]+)/kat_([0-9]+)/([0-9]+)[/]*$ 			index.php?seite=$1&kat=$2&id=$3

# ... (und so weiter – alle nach dem gleichen Prinzip)
 
Du müsstest bei den anderen Regeln ebenfalls das „QSA“-Flag setzen, damit der bereits existierende Query String automatisch an den neu generierte angehängt wird.
 
Hallo Gumbo,

das war der entscheidende Hinweis. Vielen Dank. Allerdings muss die RewriteRule für die Druckansicht noch ein klein wenig anders lauten:
Code:
RewriteRule ^(.+)/druckansicht/?$			$1?druckansicht=1 [QSA]
Ist in der Umleitung vor dem »$1« ein Slash, funktioniert es nur, wenn das Root-Verzeichnis (RewriteBase) »/« ist. Auf dem Server auf meinem Rechner ist RewriteBase von der Art »/Verzeichnis/Unterverzeichnis/«. Die Regel hat dann auf das Verzeichnis »/« umgeleitet, wo es natürlich gar nix mehr gefunden hat. Ohne den Slash jedenfalls funktioniert es hier wie da.

Danke und schöne Grüße:
27apricot.
 
Zurück