WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Internet (http://www.wcm.at/forum/forumdisplay.php?f=8)
-   -   Typo3 RealUrl, Apache htaccess mod_rewrite - Problem (http://www.wcm.at/forum/showthread.php?t=193178)

void 07.06.2006 20:43

Typo3 RealUrl, Apache htaccess mod_rewrite - Problem
 
hi @ll!

habe wiedermal ein problem:
wie schon in der überschrift erwähnt, geht es um eine typo3 installation mir der extension realurl. das eigentliche problem betrifft aber ganz allgemein die apache htaccess konfiguration für mod_rewrite.
ich habe eine typo3-installation mit mehreren (sub)domains.
die erste seite ist unter domain.tld/cms zu erreichen, die zweite seite unter sub.domain.tld .
hier tritt das problem auf:
einmal ist typo3 unter / und einmal unter /cms zu erreichen.
nun verlangt realurl ein rewrite, dies funktioniert aber entweder nur (korrekt) für die eine domain, oder nur für die subdomain.
wie kann ich das korrigieren?? ich hätte mir <Location /> oder so vorgestellt, hat aber nicht funktioniert...
bin für jeden tipp dankbar!!!

hier einmal meine .htaccess:
Code:

# Enable URL rewriting
RewriteEngine On

# WENN ICH HIER NUR "/" ANGEBE, FUNKTIONIERT ES FÜR DIE SUBDOMAIN
RewriteBase /cms/

# Stop rewrite processing if we are in the typo3/ directory
RewriteRule ^(typo3|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)/ - [L]

# Redirect http://mysite/typo3 to http://mysite/typo3/index_re.php
# and stop the rewrite processing
RewriteRule ^typo3$ typo3/index_re.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

# Main URL rewriting.
RewriteRule .* index.php [L]

danke!! ;-)

jak 07.06.2006 22:30

Ich nehm man an, daß Typo3 nur einmal installiert ist, und zwar unter domain.tld/cms/.

Wenn sub.domain.tld auf das selbe Verzeichnis zeigt wie domain.tld, probier mal:
Code:

RewriteEngine on
#sub.domain.tld auf domain.tld/cms umleiten
RewriteCond %{HTTP_HOST}  ^sub\.domain\.tld
RewriteRule ^/(.*) http://domain.tld/cms/$1 [R]

#das typo3 Verzeichnis nicht weiter umleiten
RewriteRule cms/typo3/$ - [L]
RewriteRule cms/typo3/.*$ - [L]

#Umleitung fuer RealUrl
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule domain.tld/cms/.* domain.tld/cms/index.php

(hab's nicht getestet, könnte aber klappen).

Wenn sub.domain.tld auf ein anderes Verzeichniss zeigt als domain.tld ist es noch einfacher, dann sollte:
Code:

RewriteEngine on
RewriteRule  ^/(.+)  http://domain.tld/cms/$1  [R,L]

reichen.

Ich finde diese Seiten für mod_rewrite recht hilfreich:
http://www.modrewrite.de/foren/ftopic82.html
http://httpd.apache.org/docs/1.3/misc/rewriteguide.html

jak

void 08.06.2006 12:08

danke
 
hallo!

danke für die tipps.
1:1 (natürlich abgeändert auf meine domain ;) ) haben deine tipps leider nicht funktioniert...

aber ich werde mir jetzt einmal deine links durchsehen. bin ein absoluter noob beim rewriten :lol:

aber was nicht ist kann ja noch werden!

zu deiner frage:
sowohl http://domain.tld/cms als auch http://sub.domain.tld zeigen auf das selbe physikalische verzeichnis, d.h. meiner meinung nach ändert sich im grunde wirklich nur die RewriteBase, wenn es so etwas wie if-bedingung gäbe, bräuchte ich nur die base umstellen =)

void 08.06.2006 12:58

rewritebase
 
kann es sein, das rewritebase global gesehen wird?? sobald ich nämlich mehr als eine rewritebase verwenden will, wird die letzte genommen??
bei
Code:

RewriteCond ...
RewriteBase /cms/
RewriteRule ...

RewriteCond ...
RewriteBase /
RewriteRule ...

wird also auch bei der ersten rule "/" genommen:(

jak 08.06.2006 14:44

In meiner Ursprünglichen Version ist ein / zuviel:
Code:

RewriteRule ^(.*) http://domain.tld/cms/$1
statt
Code:

RewriteRule ^/(.*) http://domain.tld/cms/$1
Andere Idee:
In das gemeinsame Verzeichniss (also domain.tld/) folgende .htaccess:
Code:

RewriteEngine on
#sub.domain.tld auf domain.tld/cms umleiten
RewriteCond %{HTTP_HOST}  ^sub\.domain\.tld
RewriteRule ^(.*) http://domain.tld/cms/$1 [L]

Dann mal probieren ob damit korrekt von sub.domain.tld auf domain.tld/cms umgeleitet wird - wenn nicht ins apache error log schauen ob ein Fehler ausgegeben wird.

Und ins /cms Verzeichniss die standard Realurl .htaccess.

Falls du Zugriff auf die httpd.conf hast (wird wohl nur der Fall sein wenn dir der ganze Server gehört) kannst du RewriteLog aktivieren:
In die httpd.conf
Code:

RewriteLog "rewrite.log"
RewriteLogLevel 3

eintragen.

jak

void 08.06.2006 16:23

hallo!

umleitung funktioniert, bringt aber leider ein anderes problem mit sich:
typo3 erkennt jetzt meine korrekte seite nicht mehr, da ja der host jetzt von sub.domain.tld auf domain.tld geändert wurde, und zeigt mir demenstsprechend die falsche seite an (eben die von domain.tld).

leider habe ich im moment nur mehr user-rechte und die log-funktion kann man ja leider nur in der httpd.conf aktivieren...

ich kapier nicht ganz, was das mit der RewriteBase so arges auf sich hat... kann man die base nicht einfach in die conditions/rules mit einbauen?? dann kann ich eine allgemeingültige regel machen für domain.tld und eine für sub.domain.tld oder umgekehrt.

danke, dass du dich so bemühst ;)

EDIT:
so sollte es funktionieren:
Code:

http://domain.tld/cms -> cms/index.php *
http://sub.domain.tld -> index.php *

http://domain.tld/cms/about/impressum.html -> cms/about/impressum.html -> cms/index.php
http://sub.domain.tld/about/impressum.html -> about/impressum.html -> index.php

* das funktioniert auch... und je nach RewriteBase funktionieren auch die "unterkategorien"

jak 09.06.2006 14:07

Das einfachste wäre es, wenn der vhost Eintrag in der httpd.conf fix auf /vollstaendiger/Pfad/cms zeigt.
Was du auch probieren kannst: im Verzeichniss auf das sub.domain.tld zeigt:
Code:

RewriteEngine on
#sub.domain.tld auf sub.domain.tld/cms umleiten
RewriteCond %{HTTP_HOST}  ^sub\.domain\.tld
RewriteRule ^(.*) /cms/$1

vielleicht funktioniert es ja damit.

jak

void 09.06.2006 15:34

hmmm, da erhalte ich einen 500 error...

hab das probiert:
Code:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^domain\.tld
RewriteRule .* index.php [L]

RewriteCond %{HTTP_HOST} ^domain\.tld
RewriteRule ^cms/.* cms/index.php [L]

hat soweit funktioniert, erhalte aber beim aufruf von http://domain.tld/cms/impressum.html einen 404 error -> was kann ich daraus schließen? das er index.php nicht findet?!?

ich glaube, ich hole mir mal wieder root-rechte :D

jak 15.06.2006 20:34

Was der 404er heißt findest du am besten über das Apache Error log heraus. Wenn du darauf keinen Zugriff hast solltest du mit deinem Admin schimpfen bzw. ihn darum bitten.

An sich sollten deine .htaccess funktionieren, bei mir tun sie es jedenfalls. Bist du sicher das du nicht irrtümlich www.domain.tld versucht hast? Damit man auch www. verwenden kann, kannst du folgendes machen:
Code:

RewriteEngine on
#sub.domain.tld auf domain.tld/cms umleiten
RewriteCond %{HTTP_HOST}  !^domain\.tld
RewriteCond %{HTTP_HOST}  !^www\.domain\.tld
RewriteRule ^.* index.php [L]

RewriteCond %{HTTP_HOST}  ^domain\.tld [OR]
RewriteCond %{HTTP_HOST}  ^www\.domain\.tld
RewriteRule ^cms/.* cms/index.php [L]

jak

void 15.06.2006 23:30

werde ich bei zeiten weiter ausprobieren... im moment habe ich jedoch w.o. gegeben, da es grad sehr stressig ist ;-)

trotzdem danke, wie gesagt - ich werde es auf jeden fall noch umstellen =)


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag