Contao-Camp 2024
Ergebnis 1 bis 26 von 26

Thema: Catch-All Seite

  1. #1
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    185

    Standard Catch-All Seite

    Hallo,
    gibt es zufällig eine Erweiterung für folgenden Fall oder wie könnte man es realisieren (Serverseitig geht es irgendwie anscheinend mit Contao 4 nicht mehr)?:

    Ich suche eine Möglichkeit eine Seite als Catch-All einzurichten. Ich möchte damit alle Aufrufe unterhalb einer Seite intern umleiten.

    Beispiel:

    Es gibt die Seite thema.html bzw. /thema/ und alle Seiten die z.B. /thema/abc-123.html lauten, sollen intern auf /thema/ bzw. thema.html umgeleitet werden.
    Anschließend möchte ich nämlich die Thema ID (in diesem Fall 123) mit einem PHP-Script (include) weiterverarbeiten.

    Danke.

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Zitat Zitat von Schockwelle Beitrag anzeigen
    (Serverseitig geht es irgendwie anscheinend mit Contao 4 nicht mehr)
    Was genau meinst du damit?

  3. #3
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    185

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Was genau meinst du damit?
    Hi,
    ich habe eine Rewrite-Rule in Nginx erstellt, welche ich wie im oben genannten Bespiel umschreibe.

    Die Rule funktioniert jedoch nicht, da Contao einen 404er ausgibt. Ich habe die Vermutung, dass
    Contao nicht die vorhandene Seite (thema.html) als Variable heranzieht, sondern $_SERVER['REQUEST_URI'].

    Und in $_SERVER['REQUEST_URI'] steht nicht thema.html, sondern /thema/abc-123.html und das
    führt zum 404er.

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Das dürfte auch in Contao 3 nicht funktionieren. Die Webapplikation erkennt ja anhand der Request URI was angezeigt werden soll.

    In deinem Beispiel würde Contao die Seite "thema" anzeigen wollen und im auto_item würde "abc-123" drin stehen. Wird das auto_item nicht verwendet, zeigt Contao die 404 Seite an.

  5. #5
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    185

    Standard

    Hast du denn eine Idee wie man das lösen könnte? Eine Art Catch-All-Seite wäre die Lösung, habe nur keine Ahnung wie man das realisieren könnte.

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Du brauchst keine Catch-All Seite - auf der Seite "thema" muss ich einfach nur ein Modul befinden, dass den auto_item Parameter abgreift. Sieh' dir zB einfach das Newsreader Modul an.

  7. #7
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    185

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Du brauchst keine Catch-All Seite - auf der Seite "thema" muss ich einfach nur ein Modul befinden, dass den auto_item Parameter abgreift. Sieh' dir zB einfach das Newsreader Modul an.
    Verstehe ich das richtig, dass ich nur pseudomäßig ein Modul zwecks auto_item anlege und es eigentlich gar nicht nutze?

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Nein, du willst ja irgendwas machen mit dieser Information, oder nicht?
    Geändert von Spooky (10.11.2017 um 12:19 Uhr)

  9. #9
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    185

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Nein, du willst ja irgendwas machen mit dieser Information, oder nicht?
    Richtig, ich möchte innerhalb der Seite per Include eine PHP Datei einbinden, die eine Ausgabe anhand der ID erzeugt.
    Die Daten aus der Ausgabe werden mit einem anderen System erstellt.

    Ich dachte jetzt nur, dass ich z.B. ein Modul erstelle, was nicht angezeigt wird, damit ich keinen 404er erhalte und
    den Rest mit dem Include-File weiterverarbeite – zwecks Ausgabe.

  10. #10
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Deine PHP Datei ist ja das Modul. In deinem Modul bekommst du so das auto_item:
    PHP-Code:
    $strItem = \Input::get('auto_item'); 

  11. #11
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    185

    Standard

    Die Variable wäre nicht das Problem, sondern der 404er ist mein Problem.

    Ich bekomme es nicht hin, dass ein Aufruf einer individuellen Seite die NICHT in Contao erfasst ist bzw. mit Contao erstellt wurde
    einen 404er erzeugt.

    Ich möchte wie gesagt eine beliebige URL – die ich selbst generiere – auf eine existierende
    Contao Seite umleiten, damit ich die selbst generierte URL auslesen kann. Ohne das ich einen
    404er erzeuge.

    Mit einer Rewirte-Rule in Nginx funktioniert es anscheinend nicht.

    Oder stehe ich jetzt auf dem Schlauch???

  12. #12
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Ich glaube wir reden aneinander vorbei

    So wie ich dich verstanden habe, hast du eine Seite in Contao namens "thema". Auf dieser Seite hast du ein eigenes PHP Script, das abhängig vom zweiten URL Fragment dann Inhalte ausgibt. Lautet die URL also bspw. example.org/thema/abc-123.html willst du für das Element namens "abc-123" auf der Seite "thema" entsprechenden Inhalt ausgeben.

    Dazu muss dein PHP Script den Element Namen einfach nur folgendermaßen abrufen:
    PHP-Code:
    $strItem = \Input::get('auto_item'); 
    Geändert von Spooky (10.11.2017 um 14:42 Uhr)

  13. #13
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    185

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Ich glaube wir reden aneinander vorbei

    So wie ich dich verstanden habe, hast du eine Seite in Contao namens "thema". Auf dieser Seite hast du ein eigenes PHP Script, das abhängig vom zweiten URL Fragment dann Inhalte ausgibt. Lautet die URL also bspw. example.org/thema/abc-123.html willst du für das Element namens "abc-123" auf der Seite "thema" entsprechenden Inhalt ausgeben.

    Dazu muss dein PHP Script den Element Namen einfach nur folgendermaßen abrufen:
    PHP-Code:
    $strItem = \Input::get('auto_item'); 

    Genau.


    Allerdings führt example.org/thema/abc-123.html zu einem 404er. Und für mich auch logischerweise, da es die Seite auch nicht gibt.
    Was ich aber möchte ist kein 404er und das bekomme ich stand jetzt nicht hin.

  14. #14
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Hast du den PHP Code nun drin oder nicht? Wie schon gesagt generiert Contao die 404 Seite, wenn das auto_item nicht verwendet wird.

  15. #15
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    185

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Hast du den PHP Code nun drin oder nicht? Wie schon gesagt generiert Contao die 404 Seite, wenn das auto_item nicht verwendet wird.
    Die Seite example.org/thema.html funktioniert inkl. dem PHP-Script (Ausgabe des Scripts erfolgt). In dem PHP Script habe ich auch

    Code:
    $strItem = \Input::get('auto_item'); 
    echo $strItem;
    eingefügt. Eine echo von $strItem liefert aber keine Ausgabe.

  16. #16
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Zitat Zitat von Schockwelle Beitrag anzeigen
    Eine echo von $strItem liefert aber keine Ausgabe.
    Unter der URL example.org/thema.html natürlich nicht, aber die URL example.org/thema/abc-123.html sollte abc-123 ausgeben.

  17. #17
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    185

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Unter der URL example.org/thema.html natürlich nicht, aber die URL example.org/thema/abc-123.html sollte abc-123 ausgeben.
    Ich wollte nur sagen, dass ich die example.org/thema.html angelegt habe und diese auch funktioniert. Eine Seite example.org/thema/abc-123.html gibt es ja in der Seitenstruktur
    nicht und der Aufruf dieser führt auch zu einem 404 – logischerweise.

    Eine Seite example.org/thema/ lässt sich nicht anlegen, da Contao daraus ein /thema/.html macht.

    Wo muss denn das auto_item eingebaut werden (Auf welcher Seite mit dem Script)?


    Und danke für deine Hilfe

  18. #18
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Zitat Zitat von Schockwelle Beitrag anzeigen
    Eine Seite example.org/thema/abc-123.html gibt es ja in der Seitenstruktur
    nicht und der Aufruf dieser führt auch zu einem 404 – logischerweise.
    Hmm, sollte eigentlich funktionieren.


    Zitat Zitat von Schockwelle Beitrag anzeigen
    Wo muss denn das auto_item eingebaut werden (Auf welcher Seite mit dem Script)?
    Auf der Seite "thema". Dort hast du es ja schon, oder nicht?

  19. #19
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    185

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Hmm, sollte eigentlich funktionieren.


    Auf der Seite "thema". Dort hast du es ja schon, oder nicht?

    Auf der thema.html ist das PHP-Script eingebunden und ein einfaches echo funktioniert.
    Ein echo auf das auto_item funktioniert jedoch nicht. Vermutlich weil kein zusätzlicher Parameter übergeben wird – da direkter Aufruf der Datei.


    P.S.: Auto_item aktivieren ist in den Einstellungen aktiviert.
    Geändert von Schockwelle (10.11.2017 um 15:20 Uhr)

  20. #20
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Zitat Zitat von Schockwelle Beitrag anzeigen
    Auf der thema.html ist das PHP-Script eingebunden und ein einfaches echo funktioniert.
    Ein echo auf das auto_item funktioniert jedoch nicht.
    Wie gesagt, unter der URL example.org/thema.html ist das auto_item natürlich leer, aber die URL example.org/thema/abc-123.html sollte abc-123 ausgeben.

  21. #21
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    185

    Standard

    Vielleicht ein Bug in 4.4?

  22. #22
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Zitat Zitat von Schockwelle Beitrag anzeigen
    Vielleicht ein Bug in 4.4?
    Dann würden Nachrichten auch nicht funktionieren, das ist ja das selbe Prinzip . Ich müsste es selbst nochmal testen, aber theoretisch sollte das holen des auto_item Parameter ausreichen.

    Du hast eingangs RewriteRules erwähnt. Wie sieht deine aktuelle .htaccess oder nginx config aus?

  23. #23
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    185

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen

    Du hast eingangs RewriteRules erwähnt. Wie sieht deine aktuelle .htaccess oder nginx config aus?
    Da steht diesbezüglich nichts mehr drin.

  24. #24
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Du könntest noch folgenden Code probieren: https://github.com/contao/news-bundl...er.php#L57-L61
    Dein Item bekommst du dann mit \Input::get('items')

  25. #25
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    185

    Standard

    Problem ist gelöst – funktioniert jetzt.

    Irgendwie hat es etwas mit anderen Modulen auf der Seite zu tun, aber ganz nachvollziehen kann ich die Ursache noch nicht.

    Danke für deine Hilfe!!!

  26. #26
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Kein Problem

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •