it-swarm.com.de

Wird es SEO schaden, die Erweiterung ".html" von statischen Seiten zu entfernen, sodass sie als "text / x-generic" angezeigt werden?

Wenn wir mit einer statischen Website arbeiten möchten, generieren wir statische HTML-Dateien von Seiten mit Namen wie contacts.html und können die folgenden Zeilen zu unserer .htaccess -Datei hinzufügen

RewriteEngine On
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L]

Wenn wir also dem Link /contacts folgen, erhalten wir den Inhalt der public_html/contacts.html -Datei im Browser.

Was aber, wenn statische Dateien ohne die Erweiterung .html gespeichert werden sollen, d. H. Nur mit dem Namen contacts? Mit anderen Worten, mit dem text/x-generic -Typ. Wir brauchen in diesem Fall nicht die .htaccess-Regel, aber gibt es einige Nachteile des Ansatzes von SEO oder/und einer anderen Seite?

ps. Ich meine, wenn ich Shared Hosting verwende und keinen Zugriff auf nginx habe

Es ist kein Duplikat der Frage Soll ich eine Dateierweiterung verwenden oder nicht? , da ich nicht nach der Verwendung der Erweiterung .html in der Adressleiste des Browsers frage oder nicht.

5
stckvrw

Dies ist weniger ein SEO-Problem als vielmehr eine Frage, ob Ihre Website überhaupt funktionieren würde. Wenn es im Browser nicht funktioniert, wird es sicherlich Ihre SEO verletzen.

Ihre HTML-Seiten müssen weiterhin den MIME-Typ _text/html_ zurückgeben, damit sie vom Browser als HTML interpretiert werden. dh Sie müssen irgendwie einen HTTP-Antwortheader _Content-Type: text/html_ senden.

Normalerweise verwendet Apache die Dateierweiterung, um den MIME-Typ zu bestimmen (mithilfe der Anweisung AddType), aus der der HTTP-Antwortheader _Content-Type_ generiert wird. Wenn es keine Dateierweiterung gibt, wird die Standardeinstellung Ihres Servers für unbekannte Dateitypen zurückgegeben. (Denken Sie daran, dass diese "Standardeinstellung" nichts sein kann, dh no _Content-Type_.)

Mit anderen Worten, mit dem Typ _text/x-generic_.

Wenn der Server einen _text/x-generic_ _Content-Type_ sendet, wird der Browser die Antwort wahrscheinlich als Klartext anzeigen und als Klartext. dh Die Benutzer sehen die rohe HTML-Quelle.

Auch wenn Ihr Server möglicherweise so konfiguriert ist, dass standardmäßig eine _text/x-generic_ Antwort gesendet wird - das ist keineswegs Standard. Viele Server verwenden standardmäßig _application/octet-stream_, wodurch der Browser wahrscheinlich veranlasst wird, die Datei herunterzuladen. dh Dem Benutzer wird möglicherweise ein Dialogfeld "Speichern unter ..." angezeigt.

Der beabsichtigte Standard unter Apache 2.4 ist überhaupt kein _Content-Type_. Es bleibt also dem Browser überlassen, die Antwort zu interpretieren und selbst zu entscheiden. Dies könnte jedoch natürlich zu unterschiedlichen Antworten von verschiedenen Browsern führen, da ich nicht glaube, dass es hier einen "Standard" gibt.

In diesem Fall benötigen wir die .htaccess-Regel nicht

Aber Sie brauchen etwas, um den Header _Content-Type_ zu "reparieren".

Problemumgehung (na ja, irgendwie ...)

In Kommentaren wird die Möglichkeit erwähnt, den MIME-Typ default ​​in _.htaccess_ zu setzen. Dies ist jedoch nur in Apache 2.2 über die Direktive DefaultType verfügbar. Im Folgenden wird beispielsweise ein _Content-Type: text/html_ -Header für Ressourcen zurückgegeben, für die der MIME-Typ nicht anderweitig abgeleitet werden kann.

_DefaultType text/html
_

DefaultType funktioniert jedoch nicht mit Apache 2.4. Es ist nur aus Gründen der Abwärtskompatibilität verfügbar (dh es beschädigt den Server nicht - aber es macht eigentlich nichts).

Auf Apache 2.4 wird empfohlen, AddType zu verwenden - mit anderen Worten, die Empfehlung basiert auf dem MIME-Typ der zugrunde liegenden Dateierweiterung, z. _.html_. Wenn Sie also die Dateierweiterung entfernen, verstoßen Sie gegen die Empfehlung von Apache.

Alternativ können Sie ForceType verwenden - aber dies erzwingt ​​den MIME-Typ für alle Ressourcen (abhängig davon, wo Sie die Direktive setzen) - daher muss dies bedingt gesetzt werden. Aber worauf gründen Sie diese Bedingung? Sie könnten vielleicht überprüfen, ob der Dateiname keinen Punkt enthält (oder nur einen begrenzten Satz zulässiger Zeichen enthält), d. H. es hat keine sieht aus wie es hat eine Dateierweiterung:

_<FilesMatch "^[^.]+$">
ForceType text/html
</FilesMatch>
_

Möglicherweise gibt es jedoch andere Probleme:

  • Wie setzt Ihr Server Cache-Header? Dies kann an der Dateierweiterung liegen, es ist jedoch vorzuziehen, diese auf der Basis des MIME-Typs festzulegen.

  • Wenn Sie diese Dateien in einem Editor öffnen möchten ... wie behandelt Ihr Editor erweiterungslose Dateien?

Zusammenfassung:

Du könntest das tun, aber ich würde es nicht tun. Schreiben Sie stattdessen die URL neu.

Referenz:

  • DefaultType unter Apache 2.2 und Apache 2.4
  • ForceType in Apache 2.4
  • Mailinglisten-Archiv, in dem DefaultType (Gründe für das Löschen in Apache 2.4) und ForceType sowie andere mögliche (nicht funktionierende) Methoden zum Festlegen des _Content-Type_ -Headers mithilfe der Header -Direktive erläutert werden (obwohl dies aufgrund der Art des Headers _Content-Type_ nicht trivial ist). (Nebenbei: Beachten Sie, dass es seit Apache 2.2.12 nur möglich war, den Header _Content-Type_ zu setzen - mit der Anweisung Header):
    https://lists.gt.net/Apache/users/443558
  • Beantworten Sie SO, das eine offensichtliche Methode zum Setzen des Headers _Content-Type_ mit der Direktive Header und expressions zum bedingten Setzen des Headers _Content-Type_ darstellt Nur wenn es noch nicht gesetzt ist (siehe oben):
    https://stackoverflow.com/a/37529835/369434
6
MrWhite