htaccess-Probleme mit nicht vorhandenen Dateien in nicht vorhandenen Verzeichnissen

htaccess-Probleme mit nicht vorhandenen Dateien in nicht vorhandenen Verzeichnissen

Ich verwende die folgende .htaccessDatei, die gut funktioniert. Ich möchte jedoch auch alle Versuche, auf nicht vorhandene Dateien im Stammverzeichnis und in allen Unterverzeichnissen (unabhängig davon, ob das Unterverzeichnis vorhanden ist oder nicht) zuzugreifen, an den Hauptdomänennamen zurückleiten.

Ich habe es versucht FallbackResource, aber das Ergebnis waren 500 Serienfehler.

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://xxxxxxxxx.xxxxx/.*$ [NC]
RewriteRule \.(gif|jpg|jpeg|bmp|zip|rar|mp3|flv|swf|png|css|pdf)$ -     [F]

# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]

ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 404 /error
ErrorDocument 401 /redirect
ErrorDocument 403 /redirect

Für jede Hilfe wäre ich sehr dankbar.

Antwort1

FallbackResourceführt dazu, dass die URLintern umgeschriebenin eine andere Datei. Allerdings hätte ich gedacht, dass einexterne Weiterleitungwäre in dieser Situation vorzuziehen? FallbackResourceKönnte auch mit Ihren vorhandenen mod_rewrite-Anweisungen in Konflikt geraten. (Es wäre jedoch nützlich gewesen, Ihre Verwendung von FallbackResourcein-place zu sehen, da es Ihre Syntax gewesen sein könnte, die der Fehler war?)

Versuchen Sie nach Ihrer letzten mod_rewrite-Direktive (vor Ihren ErrorDocumentDirektiven) etwas wie das Folgende:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ / [QSD,R=302,L]

Oben steht: Wenn die Anfrage weder einer Datei noch einem Verzeichnis zugeordnet werden kann, dann Weiterleitung zum Dokumentstamm (temporär 302). Dies QSDist erforderlich, um alle Abfragezeichenfolgen aus der Anfrage zu entfernen.

Beiseite:Dies ist aus SEO-Sicht (oder aus Sicht der Benutzer) nicht zu empfehlen, falls dies ein Anliegen ist.


ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 404 /error
ErrorDocument 401 /redirect
ErrorDocument 403 /redirect

(Abgesehen davon, dass das 500-Fehlerdokument unnötigerweise mehr als einmal definiert wird...)dokumentierenin der ErrorDocumentDirektive angegeben ist, sollte ein root-relativerDateisystemPfad. zB. /redirect.php(Aber das ist nicht wirklichumleitentut es das?) Vermutlich haben Sie tatsächlich keine Datei mit dem Namen /redirect(das würde ein weiteres Umschreiben erfordern).

verwandte Informationen