Zum Inhalt springen

Probleme mit userFunc

Erstellt am 9. Januar 2012 · 24 Antworten · letzte Antwort am 18. Januar 2012 · Seite 1 von 2

Tags: Frage

LuP ·

Hallo,

es sieht so aus, als ob das Template von ROOT vererbt wird.
Versuch mal bitte in den Seiteneigenschaften von der Seite PID 30,
unter Options > Clear: Constants und Setup beide Haken zu setzen.

VG,
LuP

TheFreeman ·

Hi,

also clear constants, clear setup & wurzelebene ist aktiviert.
Das ist auch der Grund, warum ich nicht weiter weiss. 8-)

LG Daniel

Chrissli ·

Boah,
die RegExp ist ja dicke, und die funktionoert (oO) ??

Egal,
schau doch mal unter Templates im ObjectBrowser
der Unterseite das Setup durch, ob hier vielleicht doch etwas
geerbt wird

TheFreeman ·

Danke für den Tip.
Habe jetzt aber einfach meine Lösung weggeschmissen und mir die
Extension cwmobileredirect installiert und Ihr werdet es nicht
glauben, aber auch hier entsteht ein Loop.#angry#

Also muss der Fehler woanders liegen. Ich finde den aber nicht.
Bitte um Hilfe.:o

igorshmigor ·

Ach wie dumm von mir, habe die Frage zu schnell überflogen und falsch verstanden.

Hast Du im TS-Setup der Seite mobile.html auch simulatestatic aktiviert?

igorshmigor ·

Naja gut, dann halt RealURL. Hast Du auf der Seite mobile.html realurl aktiviert? Hast Du schonmal die Weiterleitungs-Extension und -Script weggelassen und geschaut, ob die URL dann korrekt aufgerufen werden kann? Nicht dass die Seite aufgrund falscher URL-Konfiguration nicht gefunden wird und dann deshalb immer wieder auf eine Fehlerseite umgeleitet wird (oder je nach Standardkonfiguration die Startseite) und diese wieder versucht auf die mobile.html weiterzuleiten usw.

igorshmigor ·

Ja, dann muss ich den anderen Recht geben, irgendwie muss das TSSetup doch auf die Seite vererbt werden, so dass auch die Seite mobile.html auf mobile.html weiterleitet.
Oder hast Du vielleicht zwei Seiten, die den Seitentitel mobile tragen und er leitet an die falsche weiter?
Bist Du Chrisslis Rat schonmal gefolgt? Was sagt denn der ObjectBrowser?

Chrissli schrieb

Egal,
schau doch mal unter Templates im ObjectBrowser
der Unterseite das Setup durch, ob hier vielleicht doch etwas
geerbt wird

Alternativ kannst Du ja auch statt einer User-Condition ein USER_INT verwenden, was den Vorteil hat, dass Du, um auf Nummer sicher zu gehen, das USER_INT im TSSetup der mobile-Seite mit dem > Operator wieder löschen kannst.

TheFreeman ·
igorshmigor schrieb

Ja, dann muss ich den anderen Recht geben, irgendwie muss das TSSetup doch auf die Seite vererbt werden, so dass auch die Seite mobile.html auf mobile.html weiterleitet.

Nein, das stimmt nicht, wenn Du die */mobile.html aufrufst, bleibst Du auch auf der und wirst nicht weitergeleitet.

igorshmigor schrieb

Oder hast Du vielleicht zwei Seiten, die den Seitentitel mobile tragen und er leitet an die falsche weiter?

Nein, habe ich geprüft.

igorshmigor schrieb

Alternativ kannst Du ja auch statt einer User-Condition ein USER_INT verwenden, was den Vorteil hat, dass Du, um auf Nummer sicher zu gehen, das USER_INT im TSSetup der mobile-Seite mit dem > Operator wieder löschen kannst.

Habe doch meine eigene userFunc schon lange entfernt und mir, wie weiter oben beschrieben, die EXT cwmobileredirect installiert, die das selbe machen soll. Aber auch da ist ein Loop. Trotz der erfolglosen Prüfungen. #angry#

TheFreeman ·

Ich habe mir einmal den Inhalt der /typo3conf/mobile_device_detect.php angesehen,
die diese Extension abgelegt hat. Die verweist per PHP-Header-Location eben genau
auf die Seiten-ID (30):

<?php
$ua = $_SERVER['HTTP_USER_AGENT'];
if(preg_match('/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge|maemo|midp|mmp|opera m(ob|in)i|palm(os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows(ce|phone)|xda|xiino/i',$ua)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|awa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r|s)|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(|\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(|\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg(g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-||o|v)|zz)|mt(50|p1|v
)|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v)|sy(01|mb)|t2(18|50)|t6(00|10|18-)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98-)|w3c(\-|)|webc|whit|wi(g|nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i',substr($ua,0,4))) 
{ 
	header('Location: http://www.meineDomain.de/?id=30'); 
	t3lib_div::_GP('isMobile') = true;
}
else
{
	t3lib_div::_GP('isMobile') = false;
}
?>
igorshmigor ·

Verwendest Du die aktuelle Version der Extension? Ich kann im Quellcode der aktuellen Extension cwmobileredirect nichts erkennen, was eine solche Datei erstellen würde.

Chrissli ·

Blöde Frage:
Tritt die Loop immer auf oder nur wenn die auf mobile.html weitergeleitet wird d.h. deine
userFunc greift?

Wenn dass der Fall ist, könnte das Problem evtl. an einer Rewrite-Regel liegen, die im Zusammenhang
mit realurl in der HTACCESS steht.

TheFreeman ·

Hi Chrissli,

TheFreeman schrieb

Habe doch meine eigene userFunc schon lange entfernt und mir, wie weiter oben beschrieben, die EXT cwmobileredirect installiert, die das selbe machen soll. Aber auch da ist ein Loop. Trotz der erfolglosen Prüfungen. #angry#

...und ja, der Loop tritt immer nur bei der Weiterleitung auf die mobile.html auf.

Chrissli ·

Ich hab' das mal ausprobiert,

wenn ich mittels Plugin den Browser als iPhone ausgebe, tritt die Loop bei mir auch auf.
Ich habe den Browser testweise so eingestellt, das eine Warnung ausgegeben wird, wenn eine
Webseite versucht mich umzuleiten. Das funktioniert z.B. bei Javascript und PHP wenn mittels "Location"
die URL gewechselt werden soll. In diesem Fall würde der Browser erst nach Bestätigung der Weiterleitung folgen.
In diesem Fall kommt aber kein Hinweis, was im Normalfall bedeutet, das die Webseite schon weiterleitet, bevor
die Browser Seiteninhalte lädt.

Ich vermute daher, dass du eine fehlerhafte Angabe in deiner .htaccess-Datei hast.
Soweit ich das nämlich sehen kann, werden mobile Geräte auf "mobile.html/" weitergeleitet. Wenn ich das
im Browser normal aufrufe werde ich auch wieder auf die Home-Seite verwiesen. Ich behaupte mal, dass du nur
den "/" am Ende entfernen müsstest, damit es wieder funktioniert. Zumindest sehe ich die mobile.html wenn ich die mobile.html
ohne Slash am Ende auf meinem iPod aufrufe, während ich in die Schleife falle, wenn der Slash am Ende steht.

TheFreeman ·

Danke für den Test. :-)

Also bei mir (Android) ist das egal, ob ich den Slash angebe, oder nicht.
Wenn ich die mobile.html direkt aufrufe, dann wird diese auch angezeigt.
Klicke ich da aber auf einen Menüpunkt, dann bin ich wieder im Loop unterwegs.#angry#

Die .htaccess beinhaltet nichts besonderes. Nur die Standard-Einträge für realURL:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ $1.$3 [L]
RewriteRule ^(typo3|t3lib|tslib|fileadmin|typo3conf|typo3temp|uploads|showpic\.php|favicon\.ico)/ - [L]
RewriteRule ^typo3$ typo3/index_re.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L]

Anscheinend wird vor der Ausgabe der Inhalte schon umgeleitet.
Da stimme ich Dir zu. Das macht auch Sinn, um die Ladezeit zu verkürzen.
Doch eigentlich darf er ja nicht mehr zurückleiten. Macht er aber.#paralyzed#

Chrissli ·

Ich vermute mal, das dein Android den Slash am Ende bei der manuellen Eingabe als Tippfehler interpretiert und ignoriert, während andere Smartphones das nicht tun.
Durch den Slash am Ende den der Webserver du willst auf ein Verzeichnis zugreifen, dass es natürlich nicht gibt.
Damit zieht die Rewrite Rule

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L]

und leitet auf index.php um. Diese wiederum erkennt das Smartphone und startet den Redirect auf mobile.html/ und schon hast du eine Loop.
Ich an deiner Stelle würde einfach mal den Slash entfernen und sehen was passiert.

...
Evtl. kannst du auch manuell der Typo-Seite, die den Inhalt von mobile.html beinhaltet, in den Seiteneinstellungen sagen, dass sie durch realUrl auf mobile/ reagieren soll, du also auf das .html verzichtest. Oder handelt es sich hier tatsächlich um eine HTML-Seite? Würde aber wirklich zuerst den Slash entfernen.