Erweiterungslose URLs in IIS
Manchmal ist es wichtig, die Dateierweiterung von Skripten, die Sie verwenden, zu entfernen oder auszublenden. Sicherheit durch Dunkelheit könnte der Grund sein, wenn Sie nicht möchten, dass andere wissen, welche Skriptsprache Sie für Ihre Website oder für statische Site-Hosts verwenden. In diesem Beispiel wird die Erweiterung .php
mithilfe des IIS-URL-Umschreibungsmoduls in einem gebrauchsfertigen Web ausgeblendet.konfiguration & .htaccess Beispiel.
- Warum müssen Dateierweiterungen in URLs ausgeblendet werden?
- Ausblenden .PHP-Erweiterung mit URL-Rewrite-Modul auf IIS
- Erweiterung für Anfragen ausblenden, die bereits a enthalten .php-Erweiterung
- Emulieren Sie Apache-Multiviews in IIS mit einem .htaccess-Datei und Helicon Ape
- Entfernen .PHP-Erweiterung mit .htaccess von URLs
Warum müssen Dateierweiterungen in URLs ausgeblendet werden?
Ich bin kein Fan von Security by Obscurity und habe dies noch nie als Ergebnis eines Sicherheitsscans erlebt.
Sicherheit durch Unklarheit ist ein Grund, die Dateierweiterung in URLs auszublenden, wenn Sie nicht möchten, dass andere wissen, welche Skriptsprache Sie für Ihre Website verwenden. Suchmaschinenoptimierung (SEO) ist ein weiterer triftiger Grund, oder Sie möchten die Dateierweiterung einfach ohne ersichtlichen Grund ausblenden.
Es gibt auch keinen Nutzen für SEO, soweit ich weiß.
Sie können diese Technik jedoch verwenden, um URLs ein wenig zu verkürzen. Es werden vier bis fünf Zeichen von der URL entfernt („.PHP“, „.HTML“, „.aspx“). Und einige sagen, dass eine Website schneller funktioniert, weil ein Webserver URLs ohne Erweiterungen schneller mit Ordnern (Verzeichnissen) abgleichen kann als URLs mit einer Erweiterung zu einer Datei.
Einige sagen. Ich habe keine Daten oder weitere Informationen dazu.
Ausblenden .PHP-Erweiterung mit URL-Rewrite-Modul auf IIS
Hier ist ein Beispiel für ein IIS-URL-Rewrite-Modul, das Sie ausblenden können.PHP-Erweiterung in URLs.
Diese Technik wird in Apache auch als Multiviews oder Content Negotiation bezeichnet. Ein Beispiel zur Verwendung finden Sie unten .htaccess in IIS.
Über MultiViews oder Inhaltsaushandlung:
Die Auswirkung von MultiViews ist wie folgt: Wenn der Server eine Anforderung für /some/dir/foo empfängt, wenn in /some/dir MultiViews aktiviert sind und /some/dir/foo nicht vorhanden ist, liest der Server das Verzeichnis und sucht nach Dateien mit dem Namen foo.* , und fälscht effektiv eine Typzuordnung, die alle diese Dateien benennt und ihnen die gleichen Medientypen und Inhaltskodierungen zuweist, die es hätte, wenn der Client nach einem von ihnen nach Namen gefragt hätte. Es wählt dann die beste Übereinstimmung mit den Anforderungen des Kunden.
Setzen Sie den folgenden Rewrite in eine web.config
Datei, um die .PHP-Erweiterung in Ihren URLs. Nun, das Beispiel verbirgt sich nicht wirklich.php von der URL, aber dies ermöglicht es Ihnen, erweiterungslose URLs wie www.example.com/index
.
Das URL-Umschreibungsmodul von IIS fügt der URL im Hintergrund den .php
-Teil hinzu.
Code language: HTML, XML (xml)
Erweiterung für Anfragen ausblenden, die bereits a enthalten .php-Erweiterung
Ein erweitertes Beispiel ist die Umleitung aller Anfragen mit .php in der URL zu ihrer erweiterungslosen Variante. Wenn also ein Besucher über /index.php
hereinkommt, wird die Erweiterung entfernt und er wird zu /index
weitergeleitet.
Unsere Rewrite-Regel ordnet diese letzte Anforderung dem Index zu.php ohne Anzeige der Erweiterung.
Code language: HTML, XML (xml)
Testen Sie solche Beispiele immer, bevor Sie sie in Produktion nehmen.
Emulieren Sie Apache-Multiviews in IIS mit einem .htaccess-Datei und Helicon Ape
Wenn Sie verwenden .htaccess in IIS können Sie den gleichen Multiviews-Effekt erstellen, um die auszublenden .PHP-Erweiterung. Dazu müssen Sie einige Rewrite-Bedingungen und Rewrite-Regeln deklarieren (RewriteCond
und RewriteRule
). Der nette Teil ist, dass dies auch mit Linux, Apache und mod_rewrite funktionieren sollte, was diese Lösung plattformübergreifend macht!
Mehrfachansichten .htaccess Beispiel
Fügen Sie in Ihrer .htaccess
-Datei die folgende Rewrite-Konfiguration hinzu:
Code language: Apache (apache)
.erklärung der htaccess-Regeln:
Der erste Codeblock verwendet zwei RewriteCond
Überprüfungen, um zu überprüfen, ob die URL eine Datei oder ein Ordner ist oder nicht. Dies ist vollständiger, klarer und schneller als das Erstellen einer Ausnahme für jeden möglichen Dateityp. Das RewriteRule
schreibt die URL – die meistens keine Dateierweiterung enthält – in eine PHP-Datei mit diesem Namen um.
Das Muster ^(+)(?:/(.+))?$
wird wie folgt erklärt:
- Die einschließenden Zeichen
^
und$
markieren den Anfang und das Ende der Zeichenfolge; Dies verhindert, dass die Regel manchmal nur einen Teil der URL - Die Gruppe
(+)
entspricht dem Namen der PHP-Datei als. Und es findet alle Zeichen bis zu einem Schrägstrich oder das Ende der Zeichenfolge
- Der Block
(?:/(+).)?
versucht, einen Schrägstrich zu finden, gefolgt von anderen Zeichen, und speichert ihn als
Die Ersetzung .php?(?2p=)
verwendet eine bedingte Referenz:
- Die Abfragezeichenfolge wird mit
p=
gefüllt, wennvorhanden ist.
Schließlich wird eine Regel hinzugefügt, die die verbirgt .PHP-Erweiterung.
Dies verhindert, dass eine Suchmaschine doppelte Inhalte findet, und verhindert somit eine Strafe für die Position Ihrer Website in den Suchergebnissen.
Es gibt auch andere Möglichkeiten.
Entfernen .PHP-Erweiterung mit .htaccess von URLs
Zu entfernen .PHP-Erweiterung von einer URL mit .htaccess können Sie folgendes in einem neuen speichern.htaccess-Datei:
Code language: Apache (apache)
Code language: Apache (apache)
Oder verwenden Sie MultiViews:
Code language: Apache (apache)
Dadurch wird die Erweiterung entfernt, wodurch die URLs benutzerfreundlicher und – manche sagen – SEO-suchmaschinenfreundlicher werden. Verwenden Sie, was für Sie am besten funktioniert, und fügen Sie Ihrem HTML-Kopf ein kanonisches Meta-Tag hinzu, um doppelten Inhalt zu vermeiden (falls zutreffend).
Hallo, mein Name ist Jan. Ich bin kein Hacker, Programmierer, Entwickler oder Guru. Ich bin nur ein Systemadministrator und mache meine tägliche Sache bei Vevida (Teil von Yourhosting) / CLDIN.
Wenn Sie ein werbefreieres und tracking-freies Website-Erlebnis wünschen, unterstützen Sie mich bitte mit einer kleinen Spende (backme.org) oder Paypal.