Willkommen!

Durch Ihre Registrierung bei uns können Sie mit anderen Mitgliedern unserer Community diskutieren, teilen und private Nachrichten austauschen.

Jetzt anmelden!

htaccess Problem

AlexanderH

New member
Registriert
16. Apr. 2008
Beiträge
782
Moin,


ich komm grad nicht wirklich weiter und bin für jede Hilfe dankbar.

Ich skizziere mal kurz das Problem:

HTML:
index.php
unterordner/index.php

Ich will im Unterordner URLs der Form www.domain.de/unterordner/domainzumverkauf.de entgegennehmen.
Im Hauptordner liegt bereits ein Skript mit folgender .htaccess:

HTML:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.de$
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/?$ index.php?q=$1
</IfModule>

Jetzt wollt ich das hier da einfügen:

HTML:
RewriteRule ^unterordner/([-_0-9a-zA-Z]*)$ unterordner/index.php?domain=$1

Allerdings klappt das nicht. Ich vermute die Regeln überschneiden sich oder meine RewriteRule ist falsch.
Ich lande bei allen Aufrufen der Form domain.de/unterordner/domain2.de auf der Startseite.


Wie krieg ich das hin? Freue mich auf eure Antworten :) Bin für jeden Input dankbar.


Grüße
Alexander
 
Hallo Alexander,

sieht für mich einfach nach einem Problem der Reihenfolge der Regeln aus:

Ich würde es so probieren:

HTML:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.de$
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]
RewriteRule ^unterordner/([-_0-9a-zA-Z]*)$ unterordner/index.php?domain=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/?$ index.php?q=$1
</IfModule>

MfG,

Christian
 
Danke für eure Tipps. Wenns hier nicht klappt wend ich mich selbstredend ans Fachforum :)

Die Reihenfolge ändern hat auch nicht geholfen.


HTML:
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]
RewriteRule ^unterordner/([-_0-9a-zA-Z]*)$ unterordner/index.php?domain=$1 [L]

Wenn die erste Regel erfolgreich ausgeführt wurde werden die anderen ja nicht mehr ausgeführt, wenn ich
das L richtig deute. Kann es daran liegen, dass meine Regel darunter keine Beachtung findet?

Grüße
Alexander
 
Genauso sieht es aus.

Wie würde so eine Negation aussehen?

HTML:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.de$
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !unterordner
RewriteRule ^(.*)/?$ index.php?q=$1
RewriteCond %{REQUEST_FILENAME} unterordner
RewriteRule ^unterordner/([-_0-9a-zA-Z]*)$ unterordner/index.php?domain=$1 [L]
</IfModule>

Jetzt mal von mir etwas gesponnen...

Grüße
Alexander
 
Mein Vorschlag:

HTML:
RewriteCond %{REQUEST_URI} !^/unterordner/(.+)? [NC]
RewriteCond %{REQUEST_URI} ^/(.+)$ [NC]
RewriteRule ^(.*) /index.php?q=$1 [L]

Habs nicht getestet.
 
Moin,

jetzt hab ich endlich wieder Zeit gefunden mich drum zu kümmern. Danke m0f für deine Hilfe.

HTML:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.de$
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/unterordner/(.+)? [NC]
RewriteCond %{REQUEST_URI} ^/(.+)$ [NC]
RewriteRule ^(.*) /index.php?q=$1 [L]
</IfModule>

Das funktioniert dahingehend, dass die URLs jetzt richtig weitergeleitet werden, allerdings entsteht
beim Aufruf der /interordner/domainname.de URLs ein 404 Error.
 
Jetzt fehlt ja auch noch die Regel für die /unterordner/ Geschichte.

HTML:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.de$
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]

RewriteCond %{REQUEST_URI} !^/unterordner/(.+)? [NC]
RewriteCond %{REQUEST_URI} ^/(.+)$ [NC]
RewriteRule ^(.*) /index.php?q=%1 [L]

RewriteCond %{REQUEST_URI} ^/unterordner/([^/]+)$ [NC]
RewriteRule ^(.*) /unterordner/index.php?domain=%1 [L]

So würde ich es machen. Eventuell die RegEx für die erlaubten Zeichen für die Domain noch etwas enger schnallen. Mit meinem Beispiel dürfen alle Zeichen, abgesehen von Slashes drinne sein, damit nicht sowas wie /unterordner/quatsch/soße als domain=quatsch/soße durch geht. Würde da vllt. sogar auf einen Domain RegEx zurückgreifen. Beispiele sollte es im Netz geben.

Habs wieder nicht getestet, kann die Funktion also nicht garantieren.
 
HTML:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.de$
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/unterordner/(.+)? [NC]
RewriteCond %{REQUEST_URI} ^/(.+)$ [NC]
RewriteRule ^(.*) /index.php?q=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/unterordner/([^/]+)$ [NC]
RewriteRule ^(.*) /unterordner/index.php?domain=$1 [L]
</IfModule>


So funktioniert es. Wegen der erlaubten Zeichen guck ich heut abend nochmal.
Jetzt gibt die GET Variable 'domain' den Unterordner mit aus, kann man mit htaccess
auch noch ändern oder soll ich das einfach per PHP auslesen?

Nochmal danke für deine Hilfe! :)

Grüße
Alexander
 
Warum nimmst du nicht einfach mein Beispiel?! Da Unterverzeichnis wird mit übergeben, weil du $1 (erste Klammer im Rule) statt %1 (erste, und RICHTIGE, Klammer im Cond) übergibst...

Warum knallst du in alle Rules das rein?
HTML:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

Scheint, als wäre das in deinem Fall absolut unnötig und verursacht unnötige Serverlast.
 
Hab ich, aber bei deinem gabs nen 500 Fehler ohne:

HTML:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

Vllt. wegen dem CMS? Das % hab ich durch $ ersetzt auf der Suche nach dem Fehler,
das kann ich wohl wieder ändern.

EDIT: $ durch % ersetzen hat funktioniert!
 

Who has viewed this thread (Total: 1) Details anzeigen

Neueste Themen

Beliebte Inhalte

Besonderer Dank

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
68.981
Beiträge
378.075
Mitglieder
6.779
Neuestes Mitglied
cekintau

Freunde des Domain-Forums

Zurück
Oben