Plugin Advanced Mod Rewrite für Contenido 4.8.x

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Beitrag von xmurrix » Mi 2. Jul 2008, 11:07

Dodger77 hat geschrieben:Man könnte natürlich auch grundsätzlich die weitere Verarbeitung für bestehende Verzeichnisse/Dateien verhindern mit:

Code: Alles auswählen

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Das Ausschließen bestehender Verzeichnisse/Dateien ist sicherlich die bessere Lösung.

Gruß
xmurrix

andreasb
Beiträge: 212
Registriert: Fr 10. Dez 2004, 02:48
Wohnort: Fernwald
Kontaktdaten:

Beitrag von andreasb » Mi 2. Jul 2008, 13:09

xmurrix hat geschrieben:
andreasb hat geschrieben:...
Der Site ist eine index.html mit Flashintro vorgeschaltet. Bei Eingabe der Domain kommt diese nun nicht mehr sondern direkt die eigentliche Startseite. Auch nicht, wenn ich die index.html direkt mit eintippe.

Wie kann das sein`
Danke!
Hallo,

wenn Mod Rewrite aktiviert ist, werden alle Anfragen bis auf einige wenige an die Seite index_controller.php weitergeleitet, auch deine Flashintro-Seite index.html.

Du musst in der .htaccess eine Regel für Ausschluss der index.html definieren, folgende Regel sollte funktionieren:

Code: Alles auswählen

RewriteRule ^cms/index.html$ - [L]
Gruß
xmurrix
Danke, geht so aber nicht. Die index.html liegt im Hauptverzeichnis. Kopiere ich sie in cms kann ich sie zwar aufruefen, aber sie soll ja bei Eingabe der Domain erscheinen.

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Beitrag von xmurrix » Mi 2. Jul 2008, 13:22

andreasb hat geschrieben:Danke, geht so aber nicht. Die index.html liegt im Hauptverzeichnis. Kopiere ich sie in cms kann ich sie zwar aufruefen, aber sie soll ja bei Eingabe der Domain erscheinen.
Hmm, wenn die index.html eine Ebene über dem Verzeichnis /cms liegt, sollte die Regel so sein:

Code: Alles auswählen

RewriteRule ^index.html$ - [L]
Du kannst aber auch den Vorschlag von Dodger77 einbauen, das ist meiner Meinung nach sogar besser.

Gruß
xmurrix

andreasb
Beiträge: 212
Registriert: Fr 10. Dez 2004, 02:48
Wohnort: Fernwald
Kontaktdaten:

Beitrag von andreasb » Mi 2. Jul 2008, 14:27

xmurrix hat geschrieben:
andreasb hat geschrieben:Danke, geht so aber nicht. Die index.html liegt im Hauptverzeichnis. Kopiere ich sie in cms kann ich sie zwar aufruefen, aber sie soll ja bei Eingabe der Domain erscheinen.
Hmm, wenn die index.html eine Ebene über dem Verzeichnis /cms liegt, sollte die Regel so sein:

Code: Alles auswählen

RewriteRule ^index.html$ - [L]
Du kannst aber auch den Vorschlag von Dodger77 einbauen, das ist meiner Meinung nach sogar besser.

Gruß
xmurrix
Sorry, aber ich bin zu blöde. Das hatte ich schon probiert, geht nicht.
Mit Dodgers Vorschlag komme ich auch nicht zurecht.

Nochmal kurz: contenido liegt unter cms, alles Standard. Die htaccess ist die beigelieferte und liegt im Hauptverzeichnis. Googeln bringt zwar viel, aber nichts was ich auf die Schnelle umsetzen kann, grosses Thema.

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Beitrag von xmurrix » Mi 2. Jul 2008, 15:13

andreasb hat geschrieben:Sorry, aber ich bin zu blöde. Das hatte ich schon probiert, geht nicht.
Mit Dodgers Vorschlag komme ich auch nicht zurecht.

Nochmal kurz: contenido liegt unter cms, alles Standard. Die htaccess ist die beigelieferte und liegt im Hauptverzeichnis. Googeln bringt zwar viel, aber nichts was ich auf die Schnelle umsetzen kann, grosses Thema.
Ist schon ok, der Fehler liegt bei mir, habe deinen Post nicht richtig gelesen.

Wenn Mod Rewrite aktiv ist, wird der Unterordner /cms als RewriteBase verwendet. Das bedeutet, dass alle Anfragen, die ins Hauptverzeichnis gehen, direkt in das Verzeichnis /cms Umgeleitet werden, daher muss auch deine index.html in den Ordner /cms hinein. Dann musst du in der .htaccess die Regel mit /cms angeben, also

Code: Alles auswählen

RewriteRule ^cms/index.html$ - [L]
Ein Aufruf von domain.ltd/index.html sorgt dafür, dass intern die domain.ltd/cms/index.html ausgegeben wird, aber nach außen bleibt die URL bei domain.ltd/index.html, auch in der Browserzeile.

Gruß
xmurrix

andreasb
Beiträge: 212
Registriert: Fr 10. Dez 2004, 02:48
Wohnort: Fernwald
Kontaktdaten:

Beitrag von andreasb » Mi 2. Jul 2008, 21:38

xmurrix hat geschrieben:
andreasb hat geschrieben:Sorry, aber ich bin zu blöde. Das hatte ich schon probiert, geht nicht.
Mit Dodgers Vorschlag komme ich auch nicht zurecht.

Nochmal kurz: contenido liegt unter cms, alles Standard. Die htaccess ist die beigelieferte und liegt im Hauptverzeichnis. Googeln bringt zwar viel, aber nichts was ich auf die Schnelle umsetzen kann, grosses Thema.
Ist schon ok, der Fehler liegt bei mir, habe deinen Post nicht richtig gelesen.

Wenn Mod Rewrite aktiv ist, wird der Unterordner /cms als RewriteBase verwendet. Das bedeutet, dass alle Anfragen, die ins Hauptverzeichnis gehen, direkt in das Verzeichnis /cms Umgeleitet werden, daher muss auch deine index.html in den Ordner /cms hinein. Dann musst du in der .htaccess die Regel mit /cms angeben, also

Code: Alles auswählen

RewriteRule ^cms/index.html$ - [L]
Ein Aufruf von domain.ltd/index.html sorgt dafür, dass intern die domain.ltd/cms/index.html ausgegeben wird, aber nach außen bleibt die URL bei domain.ltd/index.html, auch in der Browserzeile.

Gruß
xmurrix
Ich kann das zwar gedanklich nachvollziehen, nur funkt das leider nicht, warum auch immer.

Zudem sollte das Intro (ich hasse sie ja, aber ...) natürlich bei Aufruf der domain.ltd kommen.

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Beitrag von xmurrix » Mi 2. Jul 2008, 21:55

andreasb hat geschrieben:...Ich kann das zwar gedanklich nachvollziehen, nur funkt das leider nicht, warum auch immer.

Zudem sollte das Intro (ich hasse sie ja, aber ...) natürlich bei Aufruf der domain.ltd kommen.
Diesen Fall habe ich nicht bedacht, dann probiere doch die folgenden Regeln aus:

Code: Alles auswählen

RewriteRule ^cms/index.html$ - [L]
RewriteRule ^$ index.html [L]
Die erste Regel wie gewohnt und die zweite Regel sollte dafür sorgen, dass der Aufruf des Roots an die index.html im Ordner /cms/ weitergeleitet werden sollte, falls RewriteBase /cms ist.

Gruß
xmurrix

andreasb
Beiträge: 212
Registriert: Fr 10. Dez 2004, 02:48
Wohnort: Fernwald
Kontaktdaten:

Beitrag von andreasb » Mi 2. Jul 2008, 23:44

Vergelts Gott, Gott... ;-)
Das isses nun! Danke!

Fällt mir ein, dass man zu bestimmten Themen vielleicht irgendwo hier die besten Links anbieten könnte, für diejenigen, die sich gerneüber besteimmte Themen informieren möchten...

barni
Beiträge: 127
Registriert: Fr 28. Okt 2005, 20:54
Kontaktdaten:

Beitrag von barni » Do 3. Jul 2008, 20:26

Hi Leute,

klingt alles sehr interessant.
Aber hat jemand eine Zusammenfassung? sind jetzt 8 Seiten und ständig Änderungen.
Wäre toll wenn irgendjemand eine endgültige Fassung bis zum aktuellen Stand posten könnte.

Danke euch!
Barni
ich bin genauso hilflos wie ich tu ;)

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Beitrag von xmurrix » Fr 4. Jul 2008, 09:49

barni hat geschrieben:Hi Leute,

klingt alles sehr interessant.
Aber hat jemand eine Zusammenfassung? sind jetzt 8 Seiten und ständig Änderungen.
Wäre toll wenn irgendjemand eine endgültige Fassung bis zum aktuellen Stand posten könnte.

Danke euch!
Barni
Hallo,

im Startbeitrag zu Plugin Advanced Mod Rewrite für Contenido 4.8.x ist eine grobe Zusammenfassung drin, den ich ab und an aktualisiere.

Die Änderungen des Plugins sind auch dort unter Punkt Changelog aufgelistet. Was die Beiträge zu den 8 Seiten betrifft, so betreffen sehr viele davon auch Sonderfälle, die bei Usern auftreten oder sind rein Support und Hilfestellung.

Dennoch halte ich es für eine gute Idee, und würde den Startbeitrag dementsprechend erweitern.

Gruß
xmurrix

Nebel
Beiträge: 117
Registriert: Do 14. Jun 2007, 10:08
Kontaktdaten:

Beitrag von Nebel » So 6. Jul 2008, 22:10

Hi,

ich möchte das Modul Media Player mit MR einsetzen. Ohne MR funktioniert es unter der 4.8.6 einwandfrei.

Sobald ich das MR jedoch aktiviere werden die Multimediadateien nicht mehr abgespielt. Es erscheint zwar das ausgewählte Thumbnail, jedoch läd sich z.B. ein Film nicht mehr.

Auch eine Rule für die entsprechende Datei zu erstellen brachte keinen Erfolg: z.B.

Code: Alles auswählen

RewriteRule ^cms/upload/video.flv$ - [L] 
Ein Idee, woran es liegen könnte, oder was ich ausprobieren kann?

Schöne Grüße

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Beitrag von xmurrix » Mo 7. Jul 2008, 12:00

Nebel hat geschrieben:...

ich möchte das Modul Media Player mit MR einsetzen. Ohne MR funktioniert es unter der 4.8.6 einwandfrei.
Hallo,

erweitere einfach in der .htaccess die RewriteRule um den zusätlichen Ausschluss der .flv Dateien:

Code: Alles auswählen

RewriteRule !\.(js|ico|gif|jpg|jpeg|png|css|pdf|flv)$ index_controller.php [QSA,L]
Die Regel sorgt dafür, dass Anfragen mit bestimmten Dateiendungen nicht umschrieben, sondern direkt durchgelassen werden.

Gruß
xmurrix

Nebel
Beiträge: 117
Registriert: Do 14. Jun 2007, 10:08
Kontaktdaten:

Beitrag von Nebel » Mo 7. Jul 2008, 12:28

xmurrix hat geschrieben: erweitere einfach in der .htaccess die RewriteRule um den zusätlichen Ausschluss der .flv Dateien
Hi,

danke für die schnelle Antwort. Funktioniert leider nicht. Das Video wird weiterhin nicht geladen.
Auch beim Divx Webplayer nicht. Dieser gibt aber nach Ausschluss-Eintrag folgenden Fehlermeldung aus, die vorher nicht erschien:

Code: Alles auswählen

The video cannot be found (404 error) it appears to have been removed from the server
Das Videofile ist aber noch da wo es sein soll...

**EDIT**
Habe testweise im Moduloutput den relativen Pfad zum Uploadordner durch den Absoluten ersetzt; und siehe da jetzt geht es. Sogar auch, wenn man keinen Ausschluss in die .htaccess einträgt.

Grüße

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Beitrag von xmurrix » Mo 7. Jul 2008, 12:53

Nebel hat geschrieben: ...
**EDIT**
Habe testweise im Moduloutput den relativen Pfad zum Uploadordner durch den Absoluten ersetzt; und siehe da jetzt geht es. Sogar auch, wenn man keinen Ausschluss in die .htaccess einträgt.
...
Danke, diesem Hinweis werde ich mal nachgehen. Was stand vorher drin, etwa eine vollständige URL wie http://domain.tld/cms/upload/movie.flv?

Gruß
xmurrix

Nebel
Beiträge: 117
Registriert: Do 14. Jun 2007, 10:08
Kontaktdaten:

Beitrag von Nebel » Mo 7. Jul 2008, 13:47

Vorher stand im frontend nach Output drin: upload/movie.flv
Jetzt: http://www.domain.tld/cms/upload/movie.flv

Die Datei wird wie folgt über den Modulinput geholt:
#Get upload directories
$sql = "SELECT DISTINCT
dirname
FROM
".$cfg["tab"]["upl"]."
WHERE
idclient='$client' AND
filetype IN ('flv','mp3','H264','swf','jpg','png','gif')
ORDER BY
dirname";

$db->query($sql);

$selected = false;
while ($db->next_record()) {
$dirname = $db->f('dirname');
if ($cms_dirname != $dirname) {
echo '<option value="'.$dirname.'">&nbsp;'.$dirname.'</option>';
} else {
$selected = true;
echo '<option value="'.$dirname.'" selected="selected">&nbsp;'.$dirname.'</option>';
}
}

if (!$selected) {
echo '<option value="0" selected="selected">'.i18n("Bitte w&auml;hlen").'</option>';
} else {
echo '<option value="0">'.i18n("Bitte w&auml;hlen").'</option>';
}


echo '</select>&nbsp;<input type="image" src="images/submit.gif"></td></tr>';

#Choose Video file
echo '<tr><td class="text_medium" style="padding:5px">'.mi18n("Mulitmediadatei w&auml;hlen").': </td>
<td class="text_medium" style="padding:5px">';
echo '<select name="CMS_VAR[2]" style="width:200px">';
echo '<option value="0" selected="selected">'.i18n("Bitte w&auml;hlen").'</option>';

if ($cms_dirname != '0') {
#Get uploaded files
$sql = "SELECT
filename
FROM
".$cfg["tab"]["upl"]."
WHERE
idclient = '$client' AND
filetype IN ('flv','mp3','H264','swf','jpg','png','gif') AND
dirname = '$cms_dirname'
ORDER BY
filename";

$db->query($sql);

while ($db->next_record()) {
$img_name = $db->f('filename');
if ($cms_filename != $img_name) {
echo '<option value="'.$img_name.'">&nbsp;'.$img_name.'</option>';
} else {
echo '<option selected="selected" value="'.$img_name.'">&nbsp;'.$img_name.'</option>';
}
}
}

echo '</select>&nbsp;<input type="image" src="images/submit.gif"></td></tr>';
Grüße

Gesperrt