Das Entfernen der Erweiterung erfordert zwei separate Vorgänge: Wenn ein Benutzer oder eine Suchmaschine die `.php`-URL besucht, wird eine externe 301-Weiterleitung zur sauberen URL ausgeführt; die saubere URL-Anfrage wird dann intern auf die eigentliche `.php`-Datei umgeschrieben. Werden diese beiden Schritte nicht getrennt, können Endlos-Weiterleitungen und doppelte URLs entstehen.
/Produkt.php -> /Produkt
Internal rewrite: /Produkt -> /Produkt.php
ERR_TOO_MANY_REDIRECTS
404 Not FoundDas Entfernen der Erweiterung erfordert zwei separate Vorgänge: Wenn ein Benutzer oder eine Suchmaschine die `.php`-URL besucht, wird eine externe 301-Weiterleitung zur sauberen URL ausgeführt; die saubere URL-Anfrage wird dann intern auf die eigentliche `.php`-Datei umgeschrieben. Werden diese beiden Schritte nicht getrennt, können Endlos-Weiterleitungen und doppelte URLs entstehen.
Erwarten Sie kein „.htaccess“-Ergebnis, ohne die Apache-, LiteSpeed-, Plesk-Proxy- oder NGINX-only-Struktur zu reservieren.
Sichern Sie die aktuelle Datei mit dem Datum; Suchen Sie die Anweisung und Zeile im Apache/LiteSpeed-Fehlerprotokoll.
Ändern Sie die Umleitungs-, Rewrite-, Header- und Zugriffsregeln nicht gleichzeitig.
Messen Sie Status, Standort, Inhaltstyp und Weiterleitungsanzahl mit Curl und überprüfen Sie die Cache-Ebenen separat.
Wenden Sie keinen breiten, bedingungslosen Rewrite auf alle URLs an, um Erweiterungen zu entfernen.
Bedeutung: Interne Rewrites betreten erneut die externe Redirect-Bedingung.
Mögliche Ursache: Es wird keine Unterscheidung über REQUEST_URI vorgenommen.
Bedeutung: Die entsprechende `.php`-Datei wird nicht geprüft.
Mögliche Ursache: Falscher Dateipfad oder falsches Unterverzeichnis.
Bedeutung: Relative Asset-Pfade werden entsprechend der neuen URL-Tiefe aufgelöst.
Mögliche Ursache: Base path/relative URL.
Bedeutung: Das Rewrite-/Redirect-Query-Verhalten ist falsch.
Mögliche Ursache: QSA/QSD oder `?` im Ziel.
Bedeutung: Keine Verzeichnisausnahme.
Mögliche Ursache: Die `!-d`-Bedingung fehlt.
Bedeutung: Wird zum Root-Pfad umgeschrieben.
Mögliche Ursache: RewriteBase/relative substitution.
Bedeutung: Die Dateierweiterungsregel steht im Konflikt mit dem Front-Controller.
Mögliche Ursache: Regelreihenfolge.
Bedeutung: Die saubere URL sollte zum Router gehen, nicht zu einer physischen `.php`-Datei.
Mögliche Ursache: Front-controller-Architektur.
Es wurden keine Datensätze gefunden, die diesem Ausdruck entsprechen.
for u in https://example.com/Produkt.php https://example.com/Produkt; do curl -sS -o /dev/null -w "$u -> %{http_code} %{url_effective} redirects:%{num_redirects}\n" -L "$u"; doneVergleicht die Ergebnisse von URLs mit und ohne Erweiterungen.
curl -sIL --max-redirs 10 'https://example.com/Produkt.php?id=42' | grep -iE '^HTTP|^location:'Zeigt die Weiterleitungskette mit dem Query-String.
find . -maxdepth 2 -type f -name '*.php' -printf '%P\n' 2>/dev/null | sort | head -n 100Listet PHP-Dateien auf, die von Rewrites betroffen sein könnten.
grep -nE 'THE_REQUEST|REQUEST_FILENAME|RewriteRule|RewriteCond' .htaccessZeigt die Erweiterungs- und Front-Controller-Regeln mit ihrer Reihenfolgenummer.
curl -sL https://example.com/Produkt | grep -ioE '(src|href)=["'"'][^"'"']+' | head -n 40Zeigt die Asset-Pfade auf der Seite mit sauberer URL.
curl -sL https://example.com/Produkt | grep -ioE '<link[^>]+rel=["'"']canonical["'"'][^>]*>' | head -n 1Überprüft, ob die canonical URL ein erweiterungsloses Ziel anzeigt.
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ $1.php [L]RewriteCond %{THE_REQUEST} \s/+(.+?)\.php(?:[\s?]) [NC]
RewriteRule ^(.+?)\.php$ /$1 [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [END]RewriteRule ^(.+)$ $1.php [L]RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [END]RewriteRule ^(.+)\.html$ $1 [L]RewriteCond %{THE_REQUEST} \s/+(.+?)\.html(?:[\s?]) [NC]
RewriteRule ^(.+?)\.html$ /$1 [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+?)/?$ $1.html [END]RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ $1.php [L]RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L,QSA]Jede saubere URL kann einer physischen `.php`-Datei zugeordnet werden.
In einer Front-Controller-Architektur sollte der Router statt der physischen Erweiterungsentfernung verwendet werden.
WordPress erzeugt bereits saubere URLs; benutzerdefinierte Dateiregeln müssen vor dem verwalteten Block stehen.
Nein. NGINX liest keine `.htaccess`-Dateien. Die Regel muss in eine `server`- oder `location`-Konfiguration übersetzt werden.
In der Regel nicht; Apache wertet die `.htaccess`-Datei bei jeder Anfrage aus. Für Änderungen am VirtualHost, an Modulen oder an AllowOverride ist jedoch ein Reload/Restart erforderlich.
Es sollte eine datierte Sicherung der vorhandenen Datei erstellt, das aktive Document Root überprüft und die Änderung in der Staging-Umgebung oder zu verkehrsschwachen Zeiten getestet werden.
In cPanel befindet es sich meist in `public_html`, in Plesk in `httpdocs`; Addon-Domains und Subdomains können ein anderes Document Root haben.
LiteSpeed unterstützt die meisten Regeln durch Apache-Kompatibilität; einige Modul- und Handler-Verhaltensweisen können abweichen.
Vollständige Direktive und Zeilenrekord im Apache/LiteSpeed-Fehlerprotokoll. Die Datei sollte gemäß dem Protokoll wiederhergestellt werden, anstatt sie zufällig zu löschen.
Domain sollte nicht direkt ohne Überprüfung von Domain, Dokumentenwurzel, Proxy, WordPress und Serverstruktur hinzugefügt werden. Beispiele sollten angepasst und getestet werden.
Wir untersuchen Umleitungs-, Umschreibe-, CORS-, Zugriffs- und 500 -Fehler mit Protokollen in cPanel-, Plesk-, LiteSpeed-, WordPress-, benutzerdefinierten PHP- und WISECP-Strukturen.