Zum Inhalt springen

Verzweiflung mit IIS + realurl + ISAPI_rewrite

Erstellt am 27. Juni 2007 · 8 Antworten · letzte Antwort am 11. Juli 2007

Tags: RealURL, Frage

spoof ·

Hallo zusammen

ich weiß, es gibt einige themen hier, die sich mit realurl und iis beschäftigen, aber irgendwie scheint jede lösung anders zu sein und keine bei mir zu funktionieren, hatte auch sonst noch nix damit zu tun.

ich wäre sehr dankbar über eure hilfe.

Folgendes läuft:
- Typo3 4.0.2
- IIS 6 (Windows 2003 Server)
- realurl 1.1.3
- ISAPI_rewrite Lite 2.11

die testseite läuft unter einem virtuellen verzeichnis, sprich der link zur index.php lautet z.b. http://irgendwas.de/meineseite/index.php

es scheint mir so, als ob meine rewrite rules nicht richtig greifen. hier mal ein versuch von vielen, die ich im netz gefunden hab:

RewriteRule ^/meineseite/(typo3/|typo3temp/|typo3conf/|t3lib/|tslib/|fileadmin/|uploads/)(.*) /$1$2 [L]
RewriteRule /meineseite/(.*)\??(.*) /meineseite/index.php [I,L]

die seite wird zwar rewrited, aber man landet immer auf der startseite und die grafiken / styles werden nicht angezeigt, obwohl die base-url gesetzt wurde

config.tx_realurl_enable = 1
config.baseURL = http://irgendwas.de/meineseite/
config.prefixLocalAnchors = all

unabhängig von der extension-konfiguration zum auflösen der seiten wäre ich echt dankbar, wenn mir jemand nen tip geben könnte wie ich das ganze überhaupt mal zum laufen bringen kann.

Timo

spoof ·

Mittlerweile funktioniert das generieren der Url ohne Probleme, auch wird alles richtig angezeigt. Problem ist aber immer noch dass er die angepassten Links nicht zurückübersetzen kann.

Folgendes in meiner httpd.ini:

RewriteRule ^/meineseite/(shop/|typo3/|typo3temp/|typo3conf/|t3lib/|tslib/|fileadmin/|uploads/)(.*) /irgendwas.de/$1$2 [L]
RewriteRule /meineseite/(.*\.html)\??(.*) /meineseite/index.php [I,L]

Folgendes im TypoScript:

 config.simulateStaticDocuments = 0
 config.tx_realurl_enable = 1
 config.baseURL = ..../meineseite/
 config.prefixLocalAnchors = all
 config.content_from_pid_allowOutsideDomain = 1

Unabhängig von der realurl-konfiguration in der localconf müsste ja wenigstens die extension die benötigten funktionen aufrufen um den link wieder in für typo3 aufzubereiten.

Die Funktion, um ihn zu erzeugen, wird aufgerufen:

 class.tx_realurl_advanced.php -> function IDtoPagePath(&$paramKeyValues, &$pathParts)

Die Funktion, um ihn wieder zurück umzuwandeln, wird nicht aufgerufen:

 class.tx_realurl_advanced.php -> function pagePathtoID(&$pathParts)

Kann mir hier irgendjemand vll nen Tip geben??

Maxx ·

Hi,

also in meiner httpd.ini steht:

RewriteRule /typo3 /typo3/index_re.php
RewriteRule (.*?)([0-9]*)(\.)([0-9]*)(\.html)(\??)(.*?) /index\.php\?id=$2&type=$4$7 [​I]

Und im Setup von Typo:
config.simulateStaticDocuments = 1

Mehr nicht! Auch kein realURL
Das funzt prima.

Ergebnis z.B.:
http://domain/1528.0.html

spoof ·

hallo maxx,

danke für die antwort.

simulateStaticURL's hatte ich am Anfang auch, allerdings will der kunde speaking url's, sprich simulateStaticURL bringt mich nicht wirklich weiter - deswegen realurl um links wie domain.de/web/information/produkte/meinprodukt.html zu bekommen.

Maxx ·

Ich kämpfe auch schon länger damit endlich mal speakingURLs hinzubekommen.
Ich wechsel demnächst wohl auf den Apache unter Windows.
Der IIS macht mir einfach zuviel Mist in Sachen PHP in letzter Zeit.
Das hilft Dir wahrscheinlich wenig.
Versuchs mal damit:

RewriteRule .*\.html$ /index\.php [L]
RewriteRule .*\.html(.*)$ /index\.php [L]

Es gibt noch das hier:
http://typo3.org/extensions/repository/view/jb_noindexphp/1.1.0/

Das habe ich noch nicht getestet.

Hier noch ein netter Wiki Eintrag:
http://wiki.typo3.org/index.php/Windows#ISAPI_Rewrite

spoof ·

ich hab keine möglichkeit, auf apache zu wechseln. deswegen muss ich mit iis auskommen.

den wiki-eintrag hab ich mir auch schon einige male durchgelesen, werd aber nicht schlau daraus. hab den entsprechenden codeblock in der class.t3lib_div.php mal angeschaut, er scheint mir das richtige zurückzugeben - $retVal ist in meinem fall meineseite/index.php.

die extension jb_noindexphp hab ich mir noch nicht angesehen. ist leider auch keine doku dabei und ich bezweifle dass es damit möglich ist auch andere extensions wie ttnews schön zu rewriten.

ich weiß es liegt nur an ner kleinigkeit. aber ich finds nicht ...

timo

spoof ·

Meine urls haben ja keine parameter nach .html
z.B. meineseite/web/products/mein-produkt.html
somit greift ja eigentlich meine regel korrekt.

Hab mir folgenden Bug mal durchgelesen - http://bugs.typo3.org/view.php?id=541#3173

Ich denke da liegt das problem, weiß aber nicht obs von der rewrite-rule kommt oder typo-seitig ist.

In $_SERVER findet sich nirgendswo der komplette, rewritete pfad (meineseite/web/products/mein-produkt.html).

geb ich allerdings diesen pfad in der funktion

getIndpEnv($getEnvName)

bei

case 'REQUEST_URI':

mal ganz blöd direkt übergebe, dann funktioniert alles und die seite wird korrekt geladen.

spoof ·

ich bin jetzt soweit, dass es prinzipiell läuft.

RewriteRule .*\.html$ /meineseite/index\.php [L]
RewriteRule .*\.html(.*)$ /meineseite/index\.php$1 [L]

Diesem Bug zur Folge habe ich die Änderungen übernommen.
http://bugs.typo3.org/view.php?id=5578

Problem ist nun, dass alle links zwar verarbeitet werden, aber immer nur die startseite angezeigt wird.

Wenn $TYPO3_CONF_VARS['SYS']['requestURIvar'] gleich "/web/service.html" ist, dann wird dies auch an die nötigen funktionen übergeben, allerdings wird in der klasse "class.tx_realurl.php" in der Funkion "decodeSpURL" bei

// If there has been a redirect (basically; we arrived here otherwise than via "index.php" in the URL) this can happend either due to a CGI-script or because of reWrite rule. Earlier we used $GLOBALS['HTTP_SERVER_VARS']['REDIRECT_URL'] to check but...
if ($this->pObj->siteScript && substr($this->pObj->siteScript,0,9)!='index.php' && substr($this->pObj->siteScript,0,1)!='?'){

nicht weiterverarbeitet.

Kommentiere ich diese Abfrage aus, wird mir auch bei folgendem block für $speakingURIpath kein wert zurückgegeben:

// Getting the path which is above the current site url:
// For instance "first/second/third/index.html?&param1=value1&param2=value2" should be the result of the URL "http://localhost/typo3/dev/dummy_1/first/second/third/index.html?&param1=value1&param2=value2"
$speakingURIpath = $this->pObj->siteScript;

setz ich hier nun den pfad wieder händisch auf den richtigen wert, dann läuft der iis anscheinend in eine endlosschleife:

Fehler: Umleitungsfehler

Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.

hat hier jemand vll noch eine idee?