it-swarm.com.de

Was sind die am häufigsten verwendeten und grundlegenden Weiterleitungen von Apache htaccess?

Mit dieser Frage können wir Benutzern anbieten, die nach Informationen suchen, wie eine oder mehrere allgemeine oder grundlegende Weiterleitungen in Apache mithilfe der htaccess-Datei vorgenommen werden können. Alle zukünftigen Fragen zum Auffinden von Informationen, die von der Frage abgedeckt werden, sollten als Duplikation dieser Frage geschlossen werden. Gemäß dieser Meta-Frage .

Worum geht es in dieser Frage? Die Idee ist zwar nicht perfekt Über htaccess auf der Apache-Plattform können Sie die am häufigsten gestellten Fragen zu Weiterleitungen auf einem Lampentyp oder einem Live-Server beantworten. Die Art der Antworten sollte im Allgemeinen die sein, die Sie sich vorstellen können und die weltweit von 100.000 Websites verwendet werden und die hier bei Pro Webmasters immer wieder in verschiedenen Formen abgefragt werden.

Einige Beispiele für die Art der Antworten, nach denen wir suchen:

  • Wie kann ich Nicht-WWW zu WWW umleiten?
  • Wie kann ich eine Unterdomäne zur Hauptdomäne umleiten?
  • Wie kann ich einen Unterordner von einer Domäne zu einem Stammverzeichnis oder einer Unterdomäne umleiten?
  • Wie kann ich eine alte URL zu einer neuen URL umleiten?

Einige Beispiele für die Arten von Antworten, nach denen wir nicht suchen:

  • Antworten ohne Weiterleitung.
  • Alle Antworten in Bezug auf NGinx, IIS oder eine andere Nicht-Apache-Plattform.
  • Antworten, bei denen benutzerdefinierte und komplexe Zeichenfolgen oder Abfragen entfernt werden.

Ressourcen für erweiterte bis komplexe Mod_Rewrite-Regeln:

Bitte beachten Sie : Diese Frage befindet sich noch im Aufbau und wird möglicherweise benötigt Einige Verfeinerungen entweder von mir selbst oder einem echten Moderator von Pro Webmasters, falls Sie irgendwelche Bedenken oder Fragen haben benutzen Sie bitte die Metaseite, die ich vor ein paar Tagen hier gemacht habe .

5
Simon Hayter

Mod_alias und Mod_rewrite

Es gibt 2 Module, die Sie im htaccess zur Steuerung von Weiterleitungen verwenden können. Diese sind als mod_alias und mod_rewrite bekannt. Um den Unterschied zwischen den beiden unten aufgeführten Befehlen zu erkennen, müssen Sie sich mit einigen Befehlen vertraut machen, wenn Sie mod_alias oder mod_rewrite verwenden.

mod_alias Befehle

mod_rewrite Befehle

mod_alias wird als einfachere Weiterleitungsmethode angesehen, während mod_rewrite als weiter fortgeschritten gilt und mehr Direktiven zulässt. Beachten Sie, dass mod_rewrite-Befehle vor mod_alias ausgeführt werden.


Weiterleitungscodes

  • 301 Permanent
  • 302 Temporär

Wie leite ich eine alte URL auf eine neue URL um?

Es gibt viele Möglichkeiten, eine Seite mit htaccess auf eine andere umzuleiten. 301 ist im Allgemeinen die wichtigste und am häufigsten verwendete Methode, da Seiten permanente Weiterleitungen und keine temporären Weiterleitungen erfordern. Permanente Weiterleitungen eignen sich hervorragend, um Platzierungen auf einer Seite auf einer anderen zu halten.

301 bleibende Karten

Weiterleitung 301: Redirect 301 /old.html http://www.example.com/new-url/

RedirectPermanent: RedirectPerm /old.html http://www.example.com/new-url/

RedirectMatch: RedirectMatch 301 ^old.html$ http://www.example.com/new-url/

RewriteRule:

RewriteEngine On
RewriteBase /
RewriteRule ^old.html$ http://www.example.com/new-url/ [R=301,NC,L]

302 Temporäres

Weiterleitung 302: Redirect 302 /old.html http://www.example.com/new-url/

RedirectTemp: RedirectTemp /old.html http://www.example.com/new-url/

RedirectMatch: RedirectMatch 302 ^old.html$ http://www.example.com/new-url/

RewriteRule:

RewriteEngine On
RewriteBase /
RewriteRule ^old.html$ http://www.example.com/new-url/ [R,NC,L]

Alle abfangen und Nicht-Www nach Www umleiten

Sie sollten mod_write verwenden, um alle Anfragen für Nicht-WWW-Versionen Ihrer Site umzuleiten, da die Variable $ 1 Seitennamen abfängt, sodass example.com/page1/ automatisch zu www.example.com/page1/ umleitet.

mod_rewrite:

RewriteEngine On
RewriteCond %{HTTP_Host} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_Host}/$1 [R=301,L]

mod_alias:

<If "%{HTTP_Host} != 'www.example.com'">
    Redirect permanent / http://www.example.com/
</If>

Alles abfangen und www auf no-www umleiten

mod_rewrite:

RewriteEngine On
RewriteCond %{HTTP_Host} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com$1 [R=301,L]

mod_alias:

<If "%{HTTP_Host} != 'example.com'">
    Redirect permanent / http://example.com/
</If>

Catch all und Weiterleitung von www zu no-www (HTTPS)

RewriteEngine On
RewriteCond %{HTTP_Host} ^www.example.com$ [NC]
RewriteRule ^(.*)$ https://example.com$1 [R=301,L]

TLS auf bestimmten Seiten erzwingen und in Ruhe deaktivieren

Dieses Skript entfernt TLS auf allen anderen Seiten außer der Anmeldeseite und der Registrierungsseite. Sie können einfach | als Trennzeichen zwischen den Dateinamen hinzufügen.

mod_rewrite:

RewriteCond %{HTTPS} on
RewriteCond %{SCRIPT_FILENAME} !\/(login|register)\.php [NC]
RewriteRule ^(.*)$ http://%{HTTP_Host}/$1 [R=301,L]

Erzwingen Sie TLS auf der gesamten Site

Wenn Sie TLS für die gesamte Site erzwingen möchten, können Sie mit mod_rewrite erkennen, dass HTTPS deaktiviert ist.

mod_rewrite:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} 

Erweiterungen mit mod_rewrite von der URL entfernen

Einige Web-Hosts benötigen möglicherweise Options -MultiViews in Ihrem htaccess, um diese Erweiterungen zu entfernen. Testen Sie sie ohne und fügen Sie sie einfach hinzu, wenn sie nicht funktionieren.

Erweiterungstyp PHP entfernen:

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

Erweiterungstyp HTML entfernen:

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

Erweiterungstyp HTM entfernen:

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

Funktioniert nicht? Versuchen Sie dies (ändern Sie PHP in die Dateierweiterung, die Sie entfernen möchten):

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

Entfernen und Erzwingen von Schrägstrichen

Durchsetzung:

Dadurch werden alle Anforderungen ohne nachfolgenden / an die URL mit dem Schrägstrich am Ende umgeleitet. (Beachten Sie, dass im zweiten Teil der Klammer die zu ignorierenden Dateierweiterungen stehen. Da es keinen Sinn macht, / für eine Bild-URL zu erzwingen.

RewriteCond %{REQUEST_URI}  !\.(php|html?|jpg|gif)$
RewriteRule ^(.*)([^/])$ http://%{HTTP_Host}/$1$2/ [L,R=301]

Entfernen:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} (.*)$
RewriteRule ^(.+)/$ http://www.example.com/$1 [R=301,L

Konvertieren Sie Backslashes in Forward-Slashes

Dadurch werden alle in einer URL gefundenen Backslashes in Forward-Slashes umgewandelt. Gut, um doppelten Inhalt zu verhindern:

RewriteEngine On
RewriteCond %{REQUEST_URI} (.*)\\(.*)
RewriteRule .* %1/%2 [R=301]

Alte Domain auf neue Domain umleiten

RewriteEngine On

# Redirect Entire Site to New Domain
RewriteCond %{HTTP_Host} ^example.com$ [OR]
RewriteCond %{HTTP_Host} ^sub-domain.example.com$ [NC]
RewriteRule ^(.*)$ http://new-example.com/$1 [R=301,L]

In neue Domain umleiten & Unterordner entfernen

RewriteEngine On

# Rename folder to match the sub folder you wish to remove  
RewriteCond %{HTTP_Host} ^(www\.)?example-old\.com$ [NC]
RewriteRule ^folder(/.*)?$ http://www.example-new.com$1 [L,R=301]
8
Simon Hayter