Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

mod_rewrite - Ohne www auch in Unterverzeichnissen

Mehrere Domains, Domain-Umzug, neue Dateinamen, 301/302
Neues Thema Antworten
bam
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 22.11.2010, 12:14

Beitrag von bam » 22.11.2010, 12:49

Hallo,

ich bekomme das www einfach nicht los. Für die Domain selbst klappt es (www.xy.de leitet um zu xy.de) aber die Unterverzeichnisse bleiben mit www.xy.de/einverzeichnis erreichbar.

Ich benutze in den Unterverzeichnissen separate htaccess-Dateien, damit z.B:
xy.de/vz1 intern zu einer "php-Verarbeitunsdatei" (index-vz1.php) umleitet und verarbeitet wird. Nach außen ist das nicht sichtbar.

Aber auch tiefer liegende Unterverzeichnisse wie z.B:
xy.de/vz1/uvz2 werden intern von der gleichen "php-Verarbeitunsdatei" (index-vz1.php) verarbeitet. (Intern im PHP werden dann die Verzeichnisse zerlegt und der entsprechende Inhalt wird angezeigt.)

Das funktioniert auch, aber alle Unterverzeichnisse sind mit www. erreichbar. Das soll nicht sein.

Weiterhin sollen alle Dateien, die real existieren, auch erreichbar sein. Das steht in meinen Dateien:

htaccess im root-Verzeichnis:

RewriteEngine on
# root verzeichnis umleiten auf "ohne www" #OK
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
ErrorDocument 404 /error/404.php
# Real existierende sind nicht betroffen, z.B. Bilder #OK
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

htaccess in den unterverzeichnissen zb xy.de/vz1:
RewriteEngine on
RewriteRule . index-vz1.php [QSA,L]
# xy.de/vz1 wird von index-vz1.php verarbeitet #OK
# xy.de/vz1/uvz1 wird auch von index-vz1.php verarbeitet #OK
# xy.de/vz1/uvz2 wird auch von index-vz1.php verarbeitet usw # OK

Wie bekomme ich das denn jetzt hin, dass beim Aufruf von www.xy.de/vz1 (und alle weiteren Unterverzeichnisse hiervon) dauerhaft nach außen sichtabr auf "ohne www." umgeleitet wird. Und intern die jeweilige Verabeitungsdatei angesprochen wird?

Hoffentlich kann mir jemand helfen, Danke im Voraus,
Grüße

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 22.11.2010, 18:35

Falls Du die Einstellungen mit verschiedenen .htaccess tatsächlich so belassen willst, dann ersetze in den htaccess Dateien der Unterverzeichnisse

Code: Alles auswählen

RewriteEngine on
mit

Code: Alles auswählen

RewriteEngine on
# root verzeichnis umleiten auf "ohne www" #OK
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

bam
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 22.11.2010, 12:14

Beitrag von bam » 23.11.2010, 15:31

Ich hab das genau so eingetragen in einer der htaccess-Dateien im Unterverzeichnis, aber es funktioniert nicht:
https://www.xy.de/uv1 wird nicht umgeleitet zu https://xy.de/uv1

und auch die unterunterverzeichnisse werden nicht umgeleitet:
https://www.xy.de/uv1/uvz1 wird nicht umgeleitet zu https://xy.de/uv1/uvz1


--
nochmal zum verständnis, so habe ich es momentan:
https://www.xy.de/uv1/
https://www.xy.de/uv1/uvz1
https://www.xy.de/uv1/uvz2
wird alles intern von https://www.xy.de/uv1/index-uv1.php verarbeitet. Dafür sorgt die htacces-Datei, die in https://www.xy.de/uv1/.htaccess liegt.

Das gleiche Spiel bei allen weiteren Unterverzeichnissen ersten Grades:
https://www.xy.de/uv2/
https://www.xy.de/uv2/uvz1
https://www.xy.de/uv2/uvz2
wird alles intern von https://www.xy.de/uv2/index-uv2.php verarbeitet. Dafür sorgt die htacces-Datei, die in https://www.xy.de/uv2/.htaccess liegt.

Diese index-uvX.php-Dateien zerlegen mir dann immer den gesamten URL-Pfad, und ich weiß, was der Besucher sehen will. Da können tausend verschiedene URLs rauskommen, die ich nur mit Angaben aus der Datenbank prüfen kann. Deswegen dieses Rumge-Eier.


Das klappt ja auch alles, aber ich bekomme das www nicht los.
Gibt es denn keine Möglichkeit, für immer und ewig generell das www loszuwerden? Für alle anfragen, die an die Domain gerichtet werden?
.

bam
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 22.11.2010, 12:14

Beitrag von bam » 23.11.2010, 15:43

Alternative Methoden anstelle der htaccess-Dateien in Unterverzeichnissen würde ich ja auch nehmen:

Aber ich muss dabei angeben können, das alles was in /uv1 und auch alles unterhalb\tiefer von /uv1 liegt, intern von einer bestimmten php-Datei verarbeitet werden soll.

Und alle Anfragen, die direkt in root landen z.B.
https://www.xy.de/das_ist_ein_dokument_in_root
und
https://www.xy.de/das_ist_noch_ein_dokument_in_root
sollen intern wiederum von https://www.xy.de/index.php verarbeitet werden.

Mit den htaccess-Dateien in root und den htaccess-Dateien in den Unterverzeichnissen hat das alles prima funktioniert. Aber das www bekomme ich nicht weg.

Entschuldigt meine Mehrfach-Postings. Mich macht mod_rewrite echt schwach :(

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 23.11.2010, 17:34

Falls Du es ohne htacess Dateien in den Unterverzeichnissen machen willst:

Einfach in der Root htaccess

Code: Alles auswählen

RewriteRule ^([^/]+)/ /$1/index-$1.php
Damit wird www.example.com/unterverzeichnis/

von index-unterverzeichnis.php (auf Unterverzeichnisebene) bearbeitet.

bam
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 22.11.2010, 12:14

Beitrag von bam » 23.11.2010, 18:48

Danke Chris,

ich habs jetzt anders gelöst mit einer htaccess in root:

Code: Alles auswählen

# Turn on rewrites.
RewriteEngine on
ErrorDocument 404 /error/404.php

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteRule test/(.*)$ test/index-test.php [QSA,L] 
RewriteRule bewertung/(.*)$ bewertung/index-bewertung.php [QSA,L] 
RewriteRule suchen/(.*)$ suchen/index-suchen.php [QSA,L] 
RewriteRule testbericht-melden/(.*)$ testbericht-melden/index-testbericht-melden.php [QSA,L] 
# usw...

# Don't apply to URLs that go to existing files or folders.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Alles andere wird zur index-Seite in root-directory umgeleitet.
RewriteRule . index.php

Ich versteh nur nicht eins:
# Don't apply to URLs that go to existing files or folders.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Wenn ich diesen Teil oberhalb in die htacces schreibe, dann sind die .jpg und .css nicht mehr erreichbar. Wenn es dort steht wo es jetzt steht, dann klappt alles. Ist auch egal.

Ich hoffe jetzt nur, das google das so gut findet. Ich habe mir schon einmal eine andere Website mit mod_rewrite derart zerschossen, dass sie für Besucher zwar wunderbar angezeigt wurde und mit mod_rewrite hin und her und umgeleitet wurde. Aber google zeigt in den webmaster-tools 503-Fehler und ich bin komplett aus den serps geflogen.


Wenn also jemand Fehler findet in der htaccess in diesem posting, dann bitte sagen. Das QSA brauch ich doch gar nicht, oder?


mod_rewrite ist für mich ein Buch mit 70 Siegeln, echt. Da sind mir zu viel ^(.*)$ &QSA/\\{a-z[$x1?]}. drin
. :-?

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag