2016-09-15 4 views
0

Ich habe eine Website, die auf .htaccess Rewrite-Regeln abhängt, i mit einer Sequenz, wie diese meine URL umschreiben:.htaccess Rewrite-Regeln zeigen einen Fehler in meinem Fehlerlogdatei

www.example.com/games/car/play/123 

Eigentlich gibt es keine Verzeichnisse für:

  1. Spiele
  2. Auto
  3. Spiel

Jeden Tag lese ich meine Fehlerprotokoll zeigen Tonnen Fehlerzeile (n) sagt:

File does not exist: /home/example.com/public_html/games 
File does not exist: /home/example.com/public_html/car 
File does not exist: /home/example.com/public_html/play 

Ich weiß nicht, warum Apache diese gefälschte Verzeichnisse als tatsächliche reale Verzeichnisse in Betracht ziehen? Ich habe in meinem .htaccess diese Zeilen von Rewrite-Code:

RewriteEngine On 
RewriteBase/

RewriteRule ^games/([a-zA-Z0-9-/]+)/play/(.*)$ details.php?slug=$1&id=$2 

Jetzt Apache betrachten: Spiele/Slug/Play/id wie Verzeichnisse und es ist nicht nur eine gefälschte URL-Sequenz. Auch wenn ich für untere Seite nach unten:

www.example.com/games/car Und www.example.com/games

Es ist bereits als URL existiert, aber kein Verzeichnis i einen Fehler angezeigt log sagt:

File does not exist: /home/example.com/public_html/games/car 
File does not exist: /home/example.com/public_html/games 

, wie ich dieses Problem beheben kann? Ich habe alles mögliche versucht, aber immer noch Tonnen von Fehlern in meinem Fehlerprotokoll.

Vielen Dank (und Entschuldigung für mein schlechtes Englisch).

+1

In Ihrem access.log sehen Sie Anfragen für '/ Spiele' oder'/play' usw.? – anubhava

+1

"Ich weiß nicht, warum Apache diese gefälschten Verzeichnisse als echte echte Verzeichnisse betrachten?" - Weil Ihr 'RewriteRule' _pattern_ keiner dieser URLs entspricht und Sie oder jemand anderes mit diesen URLs verlinkt. Wenn das Muster nicht übereinstimmt, hat Apache keine andere Wahl als zu versuchen, '/ games' oder'/car' usw. anzufordern, was natürlich eine 404 Not Found auslöst. Sollen diese anderen URLs gültig sein? Und wenn ja, worauf sollten sie eingehen? – MrWhite

+0

@anubhava, ja ich sehe zu viele Log-Fehler für/Spiele oder/spielen. Diese URLs sind gültig und werden der Kategorie slug für die Seite zugeordnet: category_details.php, Aber für/play wird nichts zugeordnet. –

Antwort

1

Versuchen Sie, MultiViews auszuschalten und fügen Sie auch einige Zustandsprüfungen hinzu.

Options -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^games/([a-zA-Z0-9-/]+)/play/(.*)$ details.php?slug=$1&id=$2 [L] 
+0

Ich werde das versuchen dann lassen Sie wissen, ob es gelungen ist! Vielen Dank –

+0

Vielen Dank @Panama Jack, ich kann keine Fehler im Fehlerprotokoll sehen, alle verschwunden nach der Anwendung Ihrer tollen Code :) Super –

Verwandte Themen