Mod rewrite aktivieren

Aus DeDi-Help

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
Version vom 18:43, 13. Apr. 2006 (bearbeiten)
Pawel (Diskussion | Beiträge)

← Zum vorherigen Versionsunterschied
Aktuelle Version (14:43, 8. Feb. 2010) (bearbeiten) (Entfernen)
Eppi (Diskussion | Beiträge)

 
(Der Versionsvergleich bezieht 7 dazwischen liegende Versionen mit ein.)
Zeile 1: Zeile 1:
==Einrichtung== ==Einrichtung==
-Mit Hilfe von Mod_rewrite ist es mglich Suchmaschinenfreundliche URLs zu generieren. MOD_rewrite kann man bei den meisten Servern ber eine .htaccess im Projektordner recht einfach aktivieren. Suchmaschinen erkennen so auch Seiten mit eingeschalteten Session, da die Session in den URL-Pfad integriert wird. Die Seite ist dann bei den Suchmaschinen zwar mit Session registriert - dies schadet aber nicht, da dadurch noch lange kein Zutritt zu gesperrten Seiten mglich ist. Die URLs werden lediglich im Frontend umgeschrieben.+Mit Hilfe von Mod_rewrite ist es möglich Suchmaschinenfreundliche URLs zu generieren. MOD_rewrite kann man bei den meisten Servern über eine .htaccess im Projektordner recht einfach aktivieren. Suchmaschinen erkennen so auch Seiten mit eingeschalteten Session, da die Session in den URL-Pfad integriert wird. Die Seite ist dann bei den Suchmaschinen zwar mit Session registriert - dies schadet aber nicht, da dadurch noch lange kein Zutritt zu gesperrten Seiten möglich ist. Die URLs werden lediglich im Frontend umgeschrieben.
===Voraussetzung=== ===Voraussetzung===
Zeile 14: Zeile 14:
*Im Frontend werden nun alle Links in der o.g. Form erzeugt *Im Frontend werden nun alle Links in der o.g. Form erzeugt
-Mgliche Fehler:+Mögliche Fehler:
-Fehler:Die Startseite funktioniert noch, aber die anderen werden nicht gefunden+
-Lsung: berprfen Sie ob die mod_rewrite funktioniert: [http://www.modrewrite.de/foren/ftopic82.html+
-]+
-Beachten Sie auch, das manche Webserver den "/" vor dem zweiten Eintrag bentigen und manche nicht+
-Fehler: Interner Server Error+ Fehler:Die Startseite funktioniert noch, aber die anderen werden nicht gefunden
-Lsung: berprfen Sie, ob die RewriteRule ohne Zeilenumbruch geschrieben wurde+ Lösung: überprüfen Sie ob die mod_rewrite funktioniert:[http://www.modrewrite.de/foren/ftopic82.html Hinweise aus dem modrewrite-Forum]
 + 
 +Beachten Sie auch, das manche Webserver den "/" vor dem zweiten Eintrag benötigen und manche nicht
 +
 + Fehler: Interner Server Error
 + Lösung: überprüfen Sie, ob die RewriteRule ohne Zeilenumbruch geschrieben wurde
Feinheiten: Feinheiten:
-Nicht unbedingt ntig, aber eleganter. ndern Sie die bestehende Regeln in der *.htacces so ab:+ 
 +Nicht unbedingt nötig, aber eleganter. ändern Sie die bestehende Regeln in der *.htacces so ab:
Zeile 33: Zeile 35:
-Was machen diese Regeln? Die Klammern vor .html werden gespeichert und vom Apachemodul mod_rewrite in der Variablen $1 ausgegeben. Evtl. bentigen Sie ein "/" vor der index.php?...+Was machen diese Regeln? Die Klammern vor .html werden gespeichert und vom Apachemodul mod_rewrite in der Variablen $1 ausgegeben. Evtl. benötigen Sie ein "/" vor der index.php?...
-Das heit, diese Regeln funktionieren immer auch wenn Sie nichts im Backend eingestellt haben! Probieren Sie es ruhig aus.Das passiert im Apache und ist von auen (z.B. von Google) (fast) nicht zu sehen.+Das heißt, diese Regeln funktionieren immer auch wenn Sie nichts im Backend eingestellt haben! Probieren Sie es ruhig aus.Das passiert im Apache und ist von außen (z.B. von Google) (fast) nicht zu sehen.
-Nutzen Sie die Frontendsession mit der Einstellungen 0. Andere Einstellungen bentigen Sie nur, wenn aus dem Frontend ein Login fr Redakteure ermglicht werden soll.+Nutzen Sie die Frontendsession mit der Einstellungen 0. Andere Einstellungen benötigen Sie nur, wenn aus dem Frontend ein Login für Redakteure ermöglicht werden soll.
===URLs in dieser Form www.domain.de/projektname/session/sprache/ordnername/seitenname.html=== ===URLs in dieser Form www.domain.de/projektname/session/sprache/ordnername/seitenname.html===
-Bentigt wird DeDi v1.0.2 und ein Webserver mit mod_rewrite Modul.+Benötigt wird DeDi v1.0.2 und ein Webserver mit mod_rewrite Modul.
-Grundstzlich gibt es folgende Optionen fr die Untersttzung von mod_rewrite in DeDi:+Grundsätzlich gibt es folgende Optionen für die Unterstützung von mod_rewrite in DeDi:
0 = kein mod_rewrite 0 = kein mod_rewrite
Zeile 48: Zeile 50:
2 = mod_rewrite in der Form http://domain/projektname/sprache/ordner1/ordner1_2/index.html 2 = mod_rewrite in der Form http://domain/projektname/sprache/ordner1/ordner1_2/index.html
-Diese Erklrung beschftigt sich ausschlielich mit der Option mod_rewrite=2+Diese Erklärung beschäftigt sich ausschließlich mit der Option mod_rewrite=2
-Diese Einstellung muss im Backend unter Administration - Projekt fr das jeweilige Projekt vorgenommen werden.+Diese Einstellung muss im Backend unter Administration - Projekt für das jeweilige Projekt vorgenommen werden.
-* die im Projektverzeichnis vorhandene Datei htaccess.txt muss an die Gegebenheiten des Projekts angepasst werden. Hierzu sollten die Spachen, sowie die zugehrigen Sprach-IDs (Tabelle prefix_lang) bekannt sein. Wir laden die Datei per FTP herunter.+* die im Projektverzeichnis vorhandene Datei htaccess.txt muss an die Gegebenheiten des Projekts angepasst werden. Hierzu sollten die Spachen, sowie die zugehörigen Sprach-IDs (Tabelle prefix_lang) bekannt sein. Wir laden die Datei per FTP herunter.
*Der Teil de orginal htaccess.txt sieht so aus und wird an den markierten Stellen angepasst *Der Teil de orginal htaccess.txt sieht so aus und wird an den markierten Stellen angepasst
Zeile 59: Zeile 61:
/index.php?rewrite_sid=$1&lang=<u>1</u>&rewrite_path=<u>deutsch</u>/$2&rewrite_values=$3&%1 /index.php?rewrite_sid=$1&lang=<u>1</u>&rewrite_path=<u>deutsch</u>/$2&rewrite_values=$3&%1
-*Angenommen unsere Sprache hiee de und deren Sprach-ID wre 3. In diesem Fall she eine passende htaccess.txt wie folgt aus. Wichtig ist, das Du diese Einstellung als Name der Sprache unter Deinen Projekteinstellungen hast.+*Angenommen unsere Sprache hieße de und deren Sprach-ID wäre 3. In diesem Fall sähe eine passende htaccess.txt wie folgt aus. Wichtig ist, das Du diese Einstellung als Name der Sprache unter Deinen Projekteinstellungen hast.
RewriteCond %{QUERY_STRING} ^(.*)?$ RewriteCond %{QUERY_STRING} ^(.*)?$
Zeile 65: Zeile 67:
/index.php?rewrite_sid=$1&lang=<u>3</u>&rewrite_path=<u>de</u>/$2&rewrite_values=$3&%1 /index.php?rewrite_sid=$1&lang=<u>3</u>&rewrite_path=<u>de</u>/$2&rewrite_values=$3&%1
-*Wenn wir nun noch eine zweite Sprache mit dem Namen en und der Sprach-ID 4 in diesem Projekt haben msste folgender Teil der htaccess.txt hinzugefgt werden:+*Wenn wir nun noch eine zweite Sprache mit dem Namen en und der Sprach-ID 4 in diesem Projekt haben müsste folgender Teil der htaccess.txt hinzugefügt werden:
RewriteCond %{QUERY_STRING} ^(.*)?$ RewriteCond %{QUERY_STRING} ^(.*)?$
Zeile 71: Zeile 73:
/index.php?rewrite_sid=$1&lang=<u>4</u>&rewrite_path=<u>en</u>/$2&rewrite_values=$3&%1 /index.php?rewrite_sid=$1&lang=<u>4</u>&rewrite_path=<u>en</u>/$2&rewrite_values=$3&%1
-*Die vernderte htaccess.txt wird gespeichert und dann per FTP wieder in das Projektverzeichnis geladen. Die noch vorhandene Datei kann berschrieben werden.+*Die veränderte htaccess.txt wird gespeichert und dann per FTP wieder in das Projektverzeichnis geladen. Die noch vorhandene Datei kann überschrieben werden.
*Nun die hochgeladene htaccess.txt in .htaccess umbenennen. (Punkt vorangestellt, "keine" Dateiendung, bzw. der Name ist die Dateiendung) *Nun die hochgeladene htaccess.txt in .htaccess umbenennen. (Punkt vorangestellt, "keine" Dateiendung, bzw. der Name ist die Dateiendung)
Zeile 77: Zeile 79:
*Wenn die .htaccess auf dem Server ist und die Einstellungen gemacht ist eigentlich alles erledigt... *Wenn die .htaccess auf dem Server ist und die Einstellungen gemacht ist eigentlich alles erledigt...
-*Probleme kann es mit relativen Pfaden in *.css Dateien, im Layout oder eigenen Modulen geben. Hier helfen absolute Pfade oder eine Vernderung von z.B.+*Probleme kann es mit relativen Pfaden in *.css Dateien, im Layout oder eigenen Modulen geben. Hier helfen absolute Pfade oder eine Veränderung von z.B.
background-image: url(bild.gif); background-image: url(bild.gif);
Zeile 87: Zeile 89:
da wir in der url ja zwei Ordner haben, die real nicht existieren (Projektname und Sprache). da wir in der url ja zwei Ordner haben, die real nicht existieren (Projektname und Sprache).
-==Mgliche Fehler beheben==+==Mögliche Fehler beheben==
===Kontrolle=== ===Kontrolle===
*backend/phpinfo.php aufrufen und nach mod_rewrite suchen um sicher zu gehen, das mod_rewrite auf dem server installiert ist *backend/phpinfo.php aufrufen und nach mod_rewrite suchen um sicher zu gehen, das mod_rewrite auf dem server installiert ist
*kontrollieren, ob der Apache so konfiguriert ist, dass die .htaccess Datei interpretiert wird (in httpd.conf Abschnitt Directory, AllowOverride All) *kontrollieren, ob der Apache so konfiguriert ist, dass die .htaccess Datei interpretiert wird (in httpd.conf Abschnitt Directory, AllowOverride All)
-*kontrollieren, ob die sprachid in der .htaccess mit der projekt-sprachid bereinstimmt+*kontrollieren, ob die sprachid in der .htaccess mit der projekt-sprachid übereinstimmt
-*kontrollieren, ob der sprachstring mit dem projektsprachstring bereinstimmt+*kontrollieren, ob der sprachstring mit dem projektsprachstring übereinstimmt
-===Mgliche Lsungen===+===Mögliche Lösungen===
*erste Zeile in der .htaccess mit # auskommentieren *erste Zeile in der .htaccess mit # auskommentieren
*zweite Zeile in der .htaccess mit # auskommentieren *zweite Zeile in der .htaccess mit # auskommentieren
Zeile 102: Zeile 104:
sollte es so aussehen: sollte es so aussehen:
index.php?rewrite_sid=$1&lang=<u>3</u>&rewrite_path=<u>de</u>/$2&rewrite_values=$3&%1 index.php?rewrite_sid=$1&lang=<u>3</u>&rewrite_path=<u>de</u>/$2&rewrite_values=$3&%1
-*falls euer Projekt in einem Unterverzeichnis liegt, solltet Ihr /index.php in einen relativen systempfad ndern+*falls euer Projekt in einem Unterverzeichnis liegt, solltet Ihr /index.php in einen relativen systempfad ändern
Also statt Also statt
/index.php?rewrite_sid=$1&lang=<u>3</u>&rewrite_path=<u>de</u>/$2&rewrite_values=$3&%1 /index.php?rewrite_sid=$1&lang=<u>3</u>&rewrite_path=<u>de</u>/$2&rewrite_values=$3&%1
Zeile 110: Zeile 112:
Also statt Also statt
/index.php?rewrite_sid=$1&lang=<u>3</u>&rewrite_path=<u>de</u>/$2&rewrite_values=$3&%1 /index.php?rewrite_sid=$1&lang=<u>3</u>&rewrite_path=<u>de</u>/$2&rewrite_values=$3&%1
-knnte es so aussehen:+könnte es so aussehen:
/homepages/25/d3164858/htdocs/projektname/index.php?rewrite_sid=$1&lang=<u>3</u>&rewrite_path=<u>de</u>/$2&rewrite_values=$3&%1 /homepages/25/d3164858/htdocs/projektname/index.php?rewrite_sid=$1&lang=<u>3</u>&rewrite_path=<u>de</u>/$2&rewrite_values=$3&%1
*alle varianten mit dem auskommentieren der ersten (oder | und) zweiten zeile der .htaccess kombinieren *alle varianten mit dem auskommentieren der ersten (oder | und) zweiten zeile der .htaccess kombinieren
-===letzte Lsung===+===letzte Lösung===
*Provider um Hilfe bitten *Provider um Hilfe bitten

Aktuelle Version

Inhaltsverzeichnis

[bearbeiten] Einrichtung

Mit Hilfe von Mod_rewrite ist es möglich Suchmaschinenfreundliche URLs zu generieren. MOD_rewrite kann man bei den meisten Servern über eine .htaccess im Projektordner recht einfach aktivieren. Suchmaschinen erkennen so auch Seiten mit eingeschalteten Session, da die Session in den URL-Pfad integriert wird. Die Seite ist dann bei den Suchmaschinen zwar mit Session registriert - dies schadet aber nicht, da dadurch noch lange kein Zutritt zu gesperrten Seiten möglich ist. Die URLs werden lediglich im Frontend umgeschrieben.

[bearbeiten] Voraussetzung

  • Apache als Webserver
  • aktiviertes Modul mod_rewrite des Apache
  • mind. DeDi V1.0.2

[bearbeiten] URLs in dieser Form www.domain.de/projektname/session/catx.html

Wenn die oben genannten Voraussetzung gegeben sind, gehen Sie wie folgt vor:

  • Wechseln Sie im backend in die Einstellungen ihres Projektes (z.B. projekt01; Administration->Projekte->Projekt konfigurieren->Allgemeine Einstellungen->Apache mod_rewrite Support) und stellen Sie "1" ein
  • Im Frontend werden nun alle Links in der o.g. Form erzeugt

Mögliche Fehler:

Fehler:Die Startseite funktioniert noch, aber die anderen werden nicht gefunden
Lösung: überprüfen Sie ob die mod_rewrite funktioniert:Hinweise   aus dem modrewrite-Forum

Beachten Sie auch, das manche Webserver den "/" vor dem zweiten Eintrag benötigen und manche nicht

Fehler: Interner Server Error
Lösung: überprüfen Sie, ob die RewriteRule ohne Zeilenumbruch geschrieben wurde


Feinheiten:

Nicht unbedingt nötig, aber eleganter. ändern Sie die bestehende Regeln in der *.htacces so ab:


 #dedi mod_rewrite support=1
 RewriteRule ^side([^/]*)\.html$ index.php?idcatside=$1 [L]
 RewriteRule ^cat([^/]*)\.html$ index.php?idcat=$1 [L]


Was machen diese Regeln? Die Klammern vor .html werden gespeichert und vom Apachemodul mod_rewrite in der Variablen $1 ausgegeben. Evtl. benötigen Sie ein "/" vor der index.php?... Das heißt, diese Regeln funktionieren immer auch wenn Sie nichts im Backend eingestellt haben! Probieren Sie es ruhig aus.Das passiert im Apache und ist von außen (z.B. von Google) (fast) nicht zu sehen.

Nutzen Sie die Frontendsession mit der Einstellungen 0. Andere Einstellungen benötigen Sie nur, wenn aus dem Frontend ein Login für Redakteure ermöglicht werden soll.

[bearbeiten] URLs in dieser Form www.domain.de/projektname/session/sprache/ordnername/seitenname.html

Benötigt wird DeDi v1.0.2 und ein Webserver mit mod_rewrite Modul.

Grundsätzlich gibt es folgende Optionen für die Unterstützung von mod_rewrite in DeDi:

0 = kein mod_rewrite 1 = mod_rewrite in der Form /cat_xx.html oder /catside_xx.html 2 = mod_rewrite in der Form http://domain/projektname/sprache/ordner1/ordner1_2/index.html

Diese Erklärung beschäftigt sich ausschließlich mit der Option mod_rewrite=2 Diese Einstellung muss im Backend unter Administration - Projekt für das jeweilige Projekt vorgenommen werden.

  • die im Projektverzeichnis vorhandene Datei htaccess.txt muss an die Gegebenheiten des Projekts angepasst werden. Hierzu sollten die Spachen, sowie die zugehörigen Sprach-IDs (Tabelle prefix_lang) bekannt sein. Wir laden die Datei per FTP herunter.
  • Der Teil de orginal htaccess.txt sieht so aus und wird an den markierten Stellen angepasst
RewriteCond %{QUERY_STRING} ^(.*)?$
RewriteRule ^/?(.*/)?deutsch/([^,]*)(,[^\?]*)?  
/index.php?rewrite_sid=$1&lang=1&rewrite_path=deutsch/$2&rewrite_values=$3&%1
  • Angenommen unsere Sprache hieße de und deren Sprach-ID wäre 3. In diesem Fall sähe eine passende htaccess.txt wie folgt aus. Wichtig ist, das Du diese Einstellung als Name der Sprache unter Deinen Projekteinstellungen hast.
RewriteCond %{QUERY_STRING} ^(.*)?$
RewriteRule ^/?(.*/)?de/([^,]*)(,[^\?]*)? 
/index.php?rewrite_sid=$1&lang=3&rewrite_path=de/$2&rewrite_values=$3&%1
  • Wenn wir nun noch eine zweite Sprache mit dem Namen en und der Sprach-ID 4 in diesem Projekt haben müsste folgender Teil der htaccess.txt hinzugefügt werden:
RewriteCond %{QUERY_STRING} ^(.*)?$
RewriteRule ^/?(.*/)?en/([^,]*)(,[^\?]*)? 
/index.php?rewrite_sid=$1&lang=4&rewrite_path=en/$2&rewrite_values=$3&%1
  • Die veränderte htaccess.txt wird gespeichert und dann per FTP wieder in das Projektverzeichnis geladen. Die noch vorhandene Datei kann überschrieben werden.
  • Nun die hochgeladene htaccess.txt in .htaccess umbenennen. (Punkt vorangestellt, "keine" Dateiendung, bzw. der Name ist die Dateiendung)
  • Wenn die .htaccess auf dem Server ist und die Einstellungen gemacht ist eigentlich alles erledigt...
  • Probleme kann es mit relativen Pfaden in *.css Dateien, im Layout oder eigenen Modulen geben. Hier helfen absolute Pfade oder eine Veränderung von z.B.

background-image: url(bild.gif);

in

background-image: url(../../bild.gif);

da wir in der url ja zwei Ordner haben, die real nicht existieren (Projektname und Sprache).

[bearbeiten] Mögliche Fehler beheben

[bearbeiten] Kontrolle

  • backend/phpinfo.php aufrufen und nach mod_rewrite suchen um sicher zu gehen, das mod_rewrite auf dem server installiert ist
  • kontrollieren, ob der Apache so konfiguriert ist, dass die .htaccess Datei interpretiert wird (in httpd.conf Abschnitt Directory, AllowOverride All)
  • kontrollieren, ob die sprachid in der .htaccess mit der projekt-sprachid übereinstimmt
  • kontrollieren, ob der sprachstring mit dem projektsprachstring übereinstimmt

[bearbeiten] Mögliche Lösungen

  • erste Zeile in der .htaccess mit # auskommentieren
  • zweite Zeile in der .htaccess mit # auskommentieren
  • / vor index.php entfernen

Also statt

/index.php?rewrite_sid=$1&lang=3&rewrite_path=de/$2&rewrite_values=$3&%1

sollte es so aussehen:

index.php?rewrite_sid=$1&lang=3&rewrite_path=de/$2&rewrite_values=$3&%1
  • falls euer Projekt in einem Unterverzeichnis liegt, solltet Ihr /index.php in einen relativen systempfad ändern

Also statt

/index.php?rewrite_sid=$1&lang=3&rewrite_path=de/$2&rewrite_values=$3&%1

sollte es so aussehen:

/projektname/index.php?rewrite_sid=$1&lang=3&rewrite_path=de/$2&rewrite_values=$3&%1
  • oder in einen absoluten systempfad

Also statt

/index.php?rewrite_sid=$1&lang=3&rewrite_path=de/$2&rewrite_values=$3&%1

könnte es so aussehen:

/homepages/25/d3164858/htdocs/projektname/index.php?rewrite_sid=$1&lang=3&rewrite_path=de/$2&rewrite_values=$3&%1
  • alle varianten mit dem auskommentieren der ersten (oder | und) zweiten zeile der .htaccess kombinieren

[bearbeiten] letzte Lösung

  • Provider um Hilfe bitten


[bearbeiten] Siehe auch

Persönliche Werkzeuge