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

htaccess blockiert _POST von Dateien

Mehrere Domains, Domain-Umzug, neue Dateinamen, 301/302
Neues Thema Antworten
LeoSolutions
PostRank 1
PostRank 1
Beiträge: 6
Registriert: 19.03.2013, 10:26

Beitrag von LeoSolutions » 30.03.2013, 10:40

Hallo zusammen,

ich habe ein riesiges Problem. Und zwar habe ich mir eine htaccess-Datei gebaut die sprechende URLs bewerkstelligen soll.
Das funktioniert auch alles wunderbar, nur wenn ich Dateien per _POST übermittle (_FILES), dann gibt es einen 404er - Seite wird nicht gefunden ... ich habe schon Stunden gesucht und gemacht und getan, aber egal was ich ändere, entweder _FILES geht immernoch nicht oder ich hau mir die komplette htaccess kaputt.

Über Hilfe wäre ich echt super dankbar!

Mein Provider ist All-Inkl Neue Medien Münnich und das hier ist meine htaccess:

Code: Alles auswählen

addtype application/x-httpd-php .xml
AddCharset UTF-8 .html .php .xml

RewriteEngine on
Options +FollowSymLinks
DirectoryIndex index.php
RewriteBase /

# Beendet Redirect Schleifen ==> Wenn ich das rausnehme, dann das geht gar nichts mehr
RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* - [L]

# zieht das www. vor die eingegebene Domain
RewriteCond %{HTTP_HOST} !^www.
RewriteCond %{HTTP_HOST} !^$ [NC]
RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]

# Ausklammern von bestimmten Dateien
RewriteRule ^index\.php$ \/index.php [L]
RewriteRule ^sitemap\.xml$ \/sitemap.xml [L]
RewriteRule ^googled8b54c7ad0182048\.html$ \/googled8b54c7ad0182048.html [L]

# Ausklammern von bestimmten Verzeichnissen
RewriteRule ^(css|files|js|lib|msd1.24.4|min|tmp)($|/) - [L]

# schreibt die Dateinamen um für sprechende URI
RewriteRule (.*)\.xml(.*) $1.php$2 [nocase,L] # interpretieren von XML als PHP Code
RewriteRule ^(.*).php$ $1.html [L,R=301] # PHP wird in HTML umgeschrieben
RewriteRule ^index\.(php|htm|html)$ \/index.php [L] # jede index soll als index.php ungeschrieben werden (steht das in Konflikt zu dem Eintrag vorher?)
RewriteRule ^(en|fr|it|es)/(.*)\.(php|htm|html)$ \/index.php?id=$2&language=$1 [QSA,L] # Sprechende URI mit Sprach-Ordner
RewriteRule ^(.*)\.(php|htm|html)$ \/index.php?id=$1 [QSA,L] # Sprechende URI ohne Sprach-Ordner

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Liebe Grüße
Oliver

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 30.03.2013, 12:14

Verstehe nicht ganz, was sich hier tun soll?
LeoSolutions hat geschrieben:

Code: Alles auswählen

# Ausklammern von bestimmten Dateien
RewriteRule ^index\.php$ \/index.php [L]
RewriteRule ^sitemap\.xml$ \/sitemap.xml [L]
RewriteRule ^googled8b54c7ad0182048\.html$ \/googled8b54c7ad0182048.html [L]
/ braucht nicht maskiert zu werden, wobei eine Maskierung ohnehin nur in den Mustern erforderlich ist und nicht beim Ziel. Somit soll für index.php eine index.php ausgelöst werden usw.?
LeoSolutions hat geschrieben:

Code: Alles auswählen

RewriteRule ^(.*).php$ $1.html [L,R=301] # PHP wird in HTML umgeschrieben
RewriteRule ^index\.(php|htm|html)$ \/index.php [L] # jede index soll als index.php ungeschrieben werden (steht das in Konflikt zu dem Eintrag vorher?)
Konflikt? Sieht zumindest merkwürdig aus. Zuerst werden alle Dateien einschließlich der index.php von .php auf .html weitergeleitet (nicht umgeschrieben, sondern weitergeleitet), um in der nächsten Zeile wieder für index.html die index.php auszulösen. Kommt da keine Endlosschleife zustande?

Vielleicht ja einfach nur diese Zeilen wie folgt austauschen?

Code: Alles auswählen

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

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 30.03.2013, 12:42

Um das ganze etwas einfacher zu machen wäre es nützlich, den Dateinamen (bzw. die URL) zu kennen, von der der Post kommt und an die gepostet wird, also der "action" aus der Form.

Aber mal so grob gesagt. Die POST-Daten gehen bei einem Redirect verloren, nicht bei einem Rewrite. Es muss also was im Bereich mit R=xxx sein.

Wobei das aber auch seltsam ist, denn dann wären einfach nur dir Post-Daten weg. Da würde aber keine 404 Seite kommen. 404 heißt ja, dass die Seite nicht gefunden wurde, egal ob mit oder ohne POST-Daten.
# Ausklammern von bestimmten Dateien
RewriteRule ^index\.php$ \/index.php [L]
RewriteRule ^sitemap\.xml$ \/sitemap.xml [L]
RewriteRule ^googled8b54c7ad0182048\.html$ \/googled8b54c7ad0182048.html [L]

# Ausklammern von bestimmten Verzeichnissen
RewriteRule ^(css|files|js|lib|msd1.24.4|min|tmp)($|/) - [L]

# schreibt die Dateinamen um für sprechende URI
RewriteRule (.*)\.xml(.*) $1.php$2 [nocase,L] # interpretieren von XML als PHP Code
RewriteRule ^(.*).php$ $1.html [L,R=301] # PHP wird in HTML umgeschrieben
RewriteRule ^index\.(php|htm|html)$ \/index.php [L] # jede index soll als index.php ungeschrieben werden (steht das in Konflikt zu dem Eintrag vorher?)
Ausgehend davon, dass die erste fett markierte Rule funktioniert, kommt die Prüfung nie bis zur zweiten Markieren bei der index.php, da die immer bei der ersten abgefangen und beendet (L) wird.