seitenreport
Avatar seitenreport
Themenersteller
Inhaber
TYPO3 Senior Developer
Content Gott (1772 Beiträge)

NEU: Seitenreport 3 (Seite 6)



gelöschter Benutzer
am 04.08.2011, 13:43 Uhr schrieb

Hallo,

ich habe eine Frage wegen "index.php und / haben denselben Inhalt"
Da schreibt Matthias:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\\ /index\\.php\\ HTTP/

RewriteRule ^index\\.php$ www.seitenreport.de [R=301,L]



was auch funktioniert für Haupt-URL

Aber wie bewirkt man im .htaccess, dass jede index.php auf die entsprechende / leitet? Wenn man mehrere Unterordner hat, dann gibt die Problematik bei jede URL-Ebene die mit / endet. Zum Beispiel:

www.ebene1/
www.ebene1/unterebene1/
www.ebene1/unterebene2/
www.ebene1/unterebene1/unterunterebene1/
...
und so weiter. Da wäre unmöglich, bei dynamischen URLs alles hädlich im .htaccess einzutragen.

Habt Ihr Lösung?



gelöschter Benutzer
am 04.08.2011, 14:07 Uhr schrieb

Hallo Robert

Gefällt ihr dieses Konzept?

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)index\\.(php|html|htm) /$1 [L,R=301]

So ganz klar wird mir jetzt nicht was du mit dynamischen Urls meinst. Wenn ich recht vermute werden diese bei diesem Beispiel nicht umgeleitet.

Eine genauere Problemstellung wäre hilfreicher.

Gruß
Jörg



gelöschter Benutzer
am 04.08.2011, 14:10 Uhr schrieb

robert_b schrieb:

Aber wie bewirkt man im .htaccess, dass jede index.php auf die entsprechende / leitet? Wenn man mehrere Unterordner hat, dann gibt die Problematik bei jede URL-Ebene die mit / endet.



Versuch mal das:

RewriteRule ^(.*/)?index\\.php$ %{HTTP_HOST}/$1 [R=301,L]



gelöschter Benutzer
am 04.08.2011, 14:20 Uhr schrieb

Hallo,

danke für Hilfe; Beide Beipiele, von Jörg und Raptor leiten (leider) nur auf das Hauptverzeichnis, also auf www.ebene1/ aus meinem Beispiel, egal ob man index.php
von www.ebene1/unterebene1/ oder www.ebene1/unterebene1/unterunterebene1/ aufruft.

Es sollte aber auf dazu gehörige / leiten.
Also wenn ich www.ebene1/unterebene1/unterunterebene1/index.php eintippe, dan sollte auf www.ebene1/unterebene1/unterunterebene1/ umleiten und nicht auf www.ebene1/

Daher brauche ich einen Mechanismus, sonst ist es unreal bei tausenden URLs jedes Mal alles per Hand eintragen.

Habt Ihr vielleicht noch die eine oder andere Idee? Ich gebe zu, finde parat wirklich keine Lösung.

Gruß, Robert



gelöschter Benutzer
am 04.08.2011, 14:24 Uhr schrieb

Okay, dann versuch mal das:

RewriteCond %{REQUEST_URI} ^(.*)/index\\.php$

RewriteRule ^ %{HTTP_HOST}%1 [R=301,L]



gelöschter Benutzer
am 04.08.2011, 14:27 Uhr schrieb

Hallo Robert

Das kann nicht sein denn der Part ist auf meiner neuen Domain seit 2 Wochen im Einsatz und funktioniert.

Ebenso müsste Florians Code funktionieren.

Hast du deinen Cache mal gelöscht?

Gruß
Jörg



gelöschter Benutzer
am 04.08.2011, 14:31 Uhr schrieb

Ja habe ich Cache gelöscht und so weiter. Leider funktioniert, auch mit zweitem beispiel von Raptor, nicht. Muss nicht unbedingt an den Beispiel-Scripten von Euch liegen, dies können auch die andere Einstellungen im .htaccess bei mir mitwirken.

Ok, danke für Hilfe. Gruß, Robert



gelöschter Benutzer
am 04.08.2011, 14:33 Uhr schrieb

Die Rules müssten eigentlich funktionieren. Vielleicht liegt\'s an der RewriteBase oder in Unterverzeichnissen werden die übergeordneten .htaccess\'es nicht berücksichtigt..



gelöschter Benutzer
am 04.08.2011, 15:15 Uhr schrieb

Hallo,

noch die .htaccess dazu:

<IfModule mod_rewrite.c>

# ENABLE REWRITING
RewriteEngine On
RewriteBase /

# REDIRECT *.DOMAIN.TLD -> www.DOMAIN.TLD
RewriteCond %{HTTP_HOST} ^meine-domain.com$ [NC]

RewriteRule ^(.*) www.meine-domain.com/$1 [R=301,L]



# REDIRECT SITEMAP.XML -> SITEMAP.PHP
RewriteRule ^sitemap\\.xml$ index.php?rexseo_func=googlesitemap [NC,L]

# REDIRECT ROBOTS.TXT -> ROBOTS.PHP
RewriteRule ^robots\\.txt$ index.php?rexseo_func=robots [NC,L]

# DON\'T REWRITE DIRS/FILES
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^redaxo/.*
RewriteCond %{REQUEST_URI} !^files/.*
RewriteCond %{REQUEST_URI} !^google(.*).html*

# REWRITE ALL OTHER REQUESTS TO INDEX.PHP
RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L]

</IfModule>

die funktioniert sehr gut, schon seit langem, bis auf die, leider, Sache mit /index.php

Gruß, Robert



gelöschter Benutzer
am 04.08.2011, 16:30 Uhr schrieb

Hallo Robert

Wahrscheinlich ist es die letzte Regel die das Problem verursacht.

Zwei Möglichkeiten würde ich jetzt testen.

RewriteRule ^(.*)index\\.php /$1 [R=301]

Das aber vor dem # DON\'T REWRITE DIRS/FILES einfügen.

Oder den letzte Regel in der Richtung mal umbauen.

RewriteRule ^(.*)[(index\\.php)]?$ index.php?%{QUERY_STRING} [L]

Obwohl ich mir da nicht sicher bin was ich überhaupt mache. Also absolut geraten.

Die dritte Möglichkeit wäre dann in der PHP Datei das index.php zu entfernen.


if (!preg_match(\'#^/$#\',$_SERVER[\'REQUEST_URI\']))
{
header(\'Location:http://\'.$_SERVER[\'SERVER_NAME\'].\'/\',true,301);
exit;
}


Das Beispiel gilt zwar jetzt nur für das Root Verzeichnis man könnte es aber entsprechend umbauen.

Handelt es sich bei deinem problemkind um deinen Webkatalog?

Gruß
Jörg




« zurück zu: Internes

Das Seitenreport Forum hat aktuell 5273 Themen und 36107 Beiträge.
Insgesamt sind 496 Mitglieder registriert.