Ergebnis 1 bis 15 von 15

Thema: eigene interne RewriteRule

  1. #1
    Gesperrt
    Registriert seit
    31.07.2009.
    Ort
    Köln
    Beiträge
    43

    Standard eigene interne RewriteRule

    Guten Morgen und einen schönen Ostermontag

    ich hänge gerade an einem Problem einer internen Weiterleitung fest.
    Benutzt wird TL 2.8.1

    diese URL ist erreichbar:
    http://domain.tld/index.php/profiled...sername=U23765

    dies URL soll intern auf obige URL zugreifen
    http://domain.tld/U23765/

    Dafür benutze ich folgende .htaccess:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    a) Weiterleitung auf andere URL (funktioniert)
    RewriteRule ^U([0-9]+)/$ http://domin.ltd/index.php/profiledetails.html?username=U$1
    b) interne Weiterleitung (funktioniert NICHT)
    RewriteRule ^U([0-9]+)/$ index.php/profiledetails.html?username=U$1

    Kann mir jemand auf die richtige Spur helfen?

    Warum funktioniert die interne Weiterleitung nicht?
    Es wird 'Page not Found' (Error 404) angezeigt.

    vielen Dank und lieben Gruß
    Richard

  2. #2
    Gesperrt
    Registriert seit
    31.07.2009.
    Ort
    Köln
    Beiträge
    43

    Standard Bitte um Hilfe

    Hallo liebe Community,

    warum ist eine Weiterleitung in diesem Format möglich
    RewriteRule ^U([0-9]+)/$ http://domin.ltd/index.php/profiledetails.html?username=U$1

    und diese interne Weiterleitung führt zum 'Page not Found' Fehler?
    RewriteRule ^U([0-9]+)/$ index.php/profiledetails.html?username=U$1

    Es wird doch bei beiden Versionen dieselbe URL angesprochen? Oder nicht?

    Die erste Weiterleitung funktioniert. Nur dass sich dann die URL ändert.

    Die URL /U2345/ soll aber bestehen bleiben.

    Ist diese interne Weiterleitung nicht möglich? Oder muss ich irgendeinen anderen Pfad angeben?

    lg
    Richard

  3. #3
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Bitte keine Doppelposts, die beschleunigen die Hilfe nicht, eher im Gegenteil.

    Versuch es mal mit einem Slash (/) vor dem index.php.
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  4. #4
    Gesperrt
    Registriert seit
    31.07.2009.
    Ort
    Köln
    Beiträge
    43

    Standard sorry für doppelpost

    Hi FloB,

    danke für Deine Antwort.
    Aber der / ändert nichts am Ergebnis.
    Weiterhin weiß Typolight bei der internen Weiterleitung (alte URL bleibt im Adressfeld) nichts mit der URL anzufangen.
    Leider.
    lg
    Richard

  5. #5
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Zeig mal deine ganze .htaccess, vermutlich stimmt die Reihenfolge nicht.
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  6. #6
    Gesperrt
    Registriert seit
    31.07.2009.
    Ort
    Köln
    Beiträge
    43

    Standard

    Hi FloB
    hier die .htaccess
    Code:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    #Diese Regel funktioniert (302 weiterleitung - neue URL in Adresse)
    #RewriteRule ^U([0-9]+)/$ http://domain.tld/index.php/profiledetails.html?username=U$1
    
    #Diese Regel funktioniert nicht (404 Fehler - Page not found)
    RewriteRule ^U([0-9]+)/$ index.php/profiledetails.html?username=U$1
    Typolight selber benutzt die .htaccess nicht.
    Ich kann auch keine interne Weiterleitung (per .htaccess) auf die index.php einrichten

    Typolight (index.php) generiert die pageId anscheinend anhand der URL?
    Aus folgender URL [http://domain.tld/U1234/] wird die pageId U1234 'generiert'.
    Daher auch die Fehlermeldung 'Page not found'.

    Eventuell ist das Typolight-spezifisch, oder Server-redirect-spezifisch?

  7. #7
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Ist das deine komplette .htaccess? Ich bezweifle es …
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  8. #8
    Gesperrt
    Registriert seit
    31.07.2009.
    Ort
    Köln
    Beiträge
    43

    Standard

    doch doch, das ist die komplette .htaccess

    Die Typolight .htaccess nutze ich gar nicht. Daher ja auch /index.php/...

    Irgendwie verhindert Typolight das Funktionieren dieser Regel (an sich funktioniert die).
    Ich dachte Serverintern passiert dasselbe wie beim direkten Aufruf der URL (bzw. wie es die erste Regel macht), aber das stimmt anscheinend nicht

  9. #9
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Code:
    ##
    # Rewrite base
    ##
    RewriteEngine On
    RewriteBase /
    
    ##
    # Block malicious requests
    ##
    RewriteCond %{REQUEST_URI} (ftp|https?):|/etc/ [NC,OR]
    RewriteCond %{QUERY_STRING} (ftp|https?):|/etc/ [NC]
    RewriteRule .* - [F,L]
    
    ##
    # Rewrite TYPOlight URLs
    ##
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^/U([0-9]+)/$ index.php/profiledetails.html?username=U$1 [L]
    Wenn das nicht klappt, mal ohne Slash vor dem U probieren. Wenn dann immernoch nicht, "[L]" durch "[R=301,L]" ersetzen und schauen, wo du landest (mit beiden Varianten).

    Edit: RewriteBase natürlich anpassen, wenn nötig.
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  10. #10
    Gesperrt
    Registriert seit
    31.07.2009.
    Ort
    Köln
    Beiträge
    43

    Standard

    hallo,

    ohne Slash vor dem U, sonst greift die Regel nicht
    ohne [...] kommt wieder die Typolight-Meldung "Page not found"
    mit [L] kommt wieder die Typolight-Meldung "Page not found"
    mit [R=301] reagiert die Regel wie diese
    Code:
    RewriteRule ^U([0-9]+)/$ http://domain.tld/index.php/profiledetails.html?username=U$1
    Mit Status Code 301 wird weitergeleitet und die entsprechende Seite von Typolight aufgerufen.
    In der Adresszeile des Browsers steht dann http://domain.tld/index.php/profiled...username=U2345 (z.B.)

    Typolight wertet anscheinend nicht die End-URL aus, sondern die Aufrufende.
    Sprich in der index.php wird die URL ausgelesen und aus der URL die pageId ermittelt.
    Die index.php sagt mir ja, dass die pageId U2345 ist (obwohl intern weitergeleitet wird auf index.php/profiledetails.html)

    Am Ende funktionieren interne Weiterleitungen auf nicht existente Dateien gar nicht ?!

  11. #11
    Gesperrt
    Registriert seit
    31.07.2009.
    Ort
    Köln
    Beiträge
    43

    Standard juhu ... es funktioniert


    ist zwar nicht schön (weil core hack), aber tut das, was ich möchte.

    Ich habe die index.php direkt nach dem Code
    Code:
    	public function run()
    	{
    		global $objPage;
    		// Get page ID
    		$pageId = $this->getPageIdFromUrl();
    mit diesem Code ergänzt
    Code:
    if (preg_match('/U([0-9]+)/',$pageId)){
    $pageId = "profiledetails";
    }
    Und nun funktioniert es, wie gehofft

    Gibt es hier eine sauberere Lösung?
    Kann ich die Klasse Index erweitern und die Funktion run() dann updatesicher abändern?

    Oder ist dieser Workaround total daneben weil ...

    hare om
    und danke

  12. #12
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Pack's in /system/config/initconfig.php, das ist Updatesicher.

    Keine Ahnung, warum das nicht funktioniert, kenn mich da nicht so super aus.

    Hast du die Variante mit Slash überhaupt probiert? Auch mit allen Kombinationen der Modifikatoren (also alles innerhalb der eckigen Klammern)? Stimmt die Zielseite überhaupt?
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  13. #13
    Gesperrt
    Registriert seit
    31.07.2009.
    Ort
    Köln
    Beiträge
    43

    Standard

    Moin,
    einfach nur in die initconfig funktioniert nicht ...
    Hmmm ... geht bestimmt irgendwie.

    Naja ich lass das erstmal so.

    Ich habe in der .htaccess alle Varianten [R=301,L], [L], , [R=301] ausprobiert.
    Mit und ohne Slash.

    Ging alles nicht.
    Entweder wurde dann auch die neue URL im Browser angezeigt (und auch die korrekte Seite),
    oder "Page no found".

    Probier es auch mal aus ...Typoligth(index.php) liest die URL aus um generiert die pageId aus der URL.
    Selbst wenn intern weitergeleitet wird, benutzt Typolight (anscheinend) die 'sichtbare' URL.
    http://domain.tld/U2345/ wird intern zwar weitergeleitet. In der index.php wird dann aber als pageId U2345 angesehen und den alias gibt es in tl_pages natürlich nicht.

  14. #14
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Zitat Zitat von hanuman Beitrag anzeigen
    Ich habe in der .htaccess alle Varianten [R=301,L], [L], , [R=301] ausprobiert.
    Mit und ohne Slash.

    Ging alles nicht.
    Entweder wurde dann auch die neue URL im Browser angezeigt (und auch die korrekte Seite),
    oder "Page no found".
    Wenn wir das Problem lösen wollen, brauch ich ausführliche Infos, bei welchen Bedingungen was passiert ist und wie z. B. die Browser-URL aussah. Ich brauch einfach ALLE Informationen, die du kriegen kannst. Mit dieser Aussage kommen wir nicht weiter.
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  15. #15
    Gesperrt
    Registriert seit
    31.07.2009.
    Ort
    Köln
    Beiträge
    43

    Standard

    Hi FloB,

    Diese Regel funktioniert eigentlich.
    Code:
    RewriteRule ^U([0-9]+)/$ index.php/profiledetails.html?username=U$1
    Das heißt in der URL bleibt zum Beispiel http://domain.tld/U1234/ stehen, während intern die angegebene URL angesprochen wird.

    Typolight allerdings generiert in der index.php die $pageId, anhand derer die entsprechende Seite dann aufgebaut wird.

    Mit obiger Regel wird zwar intern weitergeleitet, aber Typolight nimmt als $pageId die URL.
    Im Beispiel ist die $pageId U1234.
    Typolight kennt aber keine Seite mit dem Alias U1234 => Page not found.

    Ich habe nun direkt in der index.php die notwendige $pageId (= profiledetails) setzen lassen, wenn als $pageId zum Beispiel U1234 vorkommt.

    Wie gesagt es funktioniert nun.
    Ich werde mal versuchen die Klasse Index zu erweitern und die run() updatesicher abzuändern.

Aktive Benutzer

Aktive Benutzer

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

Ähnliche Themen

  1. Interne Links
    Von Logo im Forum Mehrsprachigkeit
    Antworten: 1
    Letzter Beitrag: 04.03.2011, 11:14
  2. Interne Videos
    Von freaky im Forum Bilder/Dateien
    Antworten: 12
    Letzter Beitrag: 25.10.2010, 15:36
  3. Frage zu rewriteRule
    Von ways2web im Forum Off Topic
    Antworten: 3
    Letzter Beitrag: 30.08.2010, 23:43
  4. RewriteRule um den Aufruf von index.php weiterzuleiten
    Von hanuman im Forum Sonstiges zu Contao
    Antworten: 9
    Letzter Beitrag: 29.04.2010, 10:55
  5. Interne Index
    Von chr.flader im Forum Sonstige Erweiterungen
    Antworten: 7
    Letzter Beitrag: 18.03.2010, 21:33

Lesezeichen

Lesezeichen

Berechtigungen

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