Antworten auf deine Fragen:
Neues Thema erstellen

.htaccess-Weiterleitung auf www.domain.de

Duddle

Posting-Frequenz: 14µHz

AW: .htaccess-Weiterleitung auf www.domain.de

example.de/xyz/xyz/datei.png -> dieser Request soll nicht an index.php weitergeleitet werden
Dafür brauchst du keine Regel. Ein existierendes Dokument auszuliefern ist die Kernfunktion eines Webservers.
Also brauchen wir noch eine Regel für 404s oder Verzeichnisse. Ersteres ist einfach:
Code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) http://www.example.com/index.php?$1 [R=404,L]
Auf Verzeichnisse testen kannst du auch schon:
Code:
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule (.*) http://www.example.com/index.php?$1 [R=404,L]
Aber da "/" auch ein Verzeichnis ist, wollen wir das ausschließen (vermute ich):
Code:
RewriteCond %{REQUEST_URI} !^/$ 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule (.*) http://www.example.com/index.php?$1 [R=404,L]
Da die Regeln für Verzeichnisse und 404s gleich sind, können wir mit OR verknüpfen und landen bei:
Code:
RewriteCond %{REQUEST_URI} !^/$ 
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) http://www.example.com/index.php?$1 [R=404,L]
Ob das die beste Lösung ist, weiß ich nicht. Sie funktioniert aber und ist recht eindeutig.

Edit: hab jetzt erst
Das Problem an dem von mir geposteten Code ist, dass wenn das Verzeichnis existiert, wird nicht an die index.php im Hauptverzeichnis weitergeleitet, sondern auf die index-Datei im gewünschten Ordner.
gelesen. Dafür brauchst du nur ein RewriteBase, von diesem dann wird relativ der Pfad umgeschrieben:
Code:
RewriteBase /
RewriteCond %{REQUEST_URI} !^/$ 
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) http://www.example.com/index.php?$1 [R=404,L]


Duddle
 
Zuletzt bearbeitet:

AW: .htaccess-Weiterleitung auf www.domain.de

Hallo und danke für deine ausführliche Antwort.
Da das mit RewriteBase trotzdem nicht funktioniert, habe ich mich entschlossen hier den gesamten Code mal zu posten von meiner .htaccess-Datei:

Code:
#mod_rewrite auf on setzen (damit Weiterleitung möglich)
RewriteEngine On

# Weiterleitung bei 403-Fehler (FORBIDDEN)
ErrorDocument 403 http://%{HTTP_HOST}/?error=403
# Weiterleitung bei 500-Fehler (FORBIDDEN)
ErrorDocument 500 http://%{HTTP_HOST}/?error=500

# Standartmäßig alle Seiten UTF-8 deklarieren
<filesMatch "\.(htm|html|css|js|php|ini)$">
AddDefaultCharset UTF-8
</filesMatch>

# Direkten Zugriff aller Dateien (...Fortsetzung folgt)
<FilesMatch "\.(xml|php|sql|tgz|gz|txt|ttf|TTF|log|txt|ini|html)">
Order Deny,Allow
Deny from all
</FilesMatch>
# ... bis auf den hier genannten verbieten (wird auf index geleitet)! Trennen mit |
<FilesMatch "^(index|phpinfo|main|mail)\.php$">
Order Deny,Allow
Allow from all
</FilesMatch>

RewriteBase /
RewriteCond %{REQUEST_URI} !^/$ 
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) http://www.example.de/index.php?$1 [R=404,L]
Auf meinem Server ist ein Verzeichnis "img" vorhanden. Wenn ich jetzt example.de/img/ eingebe, erhalte ich:
Not Found

The requested URL /img/ was not found on this server.


Nun, das sollte ja eigentlich RewriteBase umgehen. Er sollte alle Requests außer die von existierenden Dateien auf die index-Datei weiterleiten. Irgendwas stimmt noch nicht. Komischerweise funktionieren jetzt auch nicht mehr die Verzeichnisse die nicht existieren. Alles erhält nun 404 =D
 

Duddle

Posting-Frequenz: 14µHz

AW: .htaccess-Weiterleitung auf www.domain.de

Okay, erstmal: entweder benutzt du RewriteBase oder gibst im RewriteRule einen absoluten Pfad an. Ich hatte das im vorigen Post vermischt (spät abends und so). Das Prinzip ist, dass bei gesetztem RewriteBase alle umzuschreibenden, relativen Pfade von diesem Punkt aus geschrieben werden, egal in welchem Unterverzeichnis die .htaccess liegt. Wenn ein absoluter Pfad in der RewriteRule steckt, wird RewriteBase in dem Fall ignoriert (glaube ich).

Zweitens solltest du zum testen immer dein Regelwerk entschlacken. Kommentier alles aus, was nichts mit mod_rewrite zu tun hat. Dann kannst du nach und nach die anderen Teile reinbringen bis entweder alles funktioniert oder irgendwas kaputt ist.

Drittens kann ich wieder nur darauf verweisen dass es bei mir funktioniert. Eine vorhandene Datei wird ausgeliefert, ein vorhandenes Verzeichnis oder 404 für Dateien oder Verzeichnisse werden auf die index.php umgeleitet. Wie vorher schon gesagt solltest du also das LogLevel auf mindestens 4 hochschrauben und dir die RewriteLog-Datei anschauen, da offensichtlich irgendwas anderes bei dir nicht greift.


Duddle
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben