2017-12-22 2 views
2

Also habe ich diese Seite haben, hat es eine Verzeichnisstruktur wie folgt aus:Einige Seiten ohne Endung .php Mod Rewrite

  1. index.php
  2. page1.php
  3. page3.php
  4. Ordner /index.php
  5. Beispiel/index.php
  6. page4.php

Ich möchte die Dateierweiterung .php nur aus den URLs entfernen, die sich nicht in einem Unterverzeichnis befinden. Denn wenn ich die .php von allen URLS entfernen wie so:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

Die Dateien in Unterverzeichnissen wie die von dieser URL bisher zugänglich waren: https://example.com/folder jetzt einem 404 geben, wenn ich index.php oder Dateinamen in der Eingabe Ende davon.

Deshalb möchte ich folgendes wissen:

  • Wie kann ich von nur einigen wenigen ausgewählten gezielt Dateien entfernen .php, so dass die Dateien in einem Ordner/Unterverzeichnis sind nicht betroffen?
  • Wie kann ich den obigen .htaccess-Code ändern, sodass er nicht auf die Dateien in einem Ordner/Unterverzeichnis abzielt?

Antwort

0

Wenn Sie .php Erweiterung nur Dateien im Stammordner hinzufügen wollen, dann verwenden:

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^([^/.]+)/?$ $1.php [L] 

Hier negierte Zeichenklasse [^/.]+ wird in dem aktuellen Verzeichnis nur Datei übereinstimmen, der 1 oder mehr Zeichen entspricht, die nicht / und .

Allerdings, wenn Sie richtig .php auf alle Dateien hinzufügen möchten, dann diese Regel verwenden:

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+?)/?$ $1.php [L]