2009-03-29 8 views
1

Wenn Sie www.codinghorror.com gehen, wird es automatisch zu www.codinghorror.com/blog umgeleitetWie implementieren Sie einfache Website-Weiterleitungen?

Wie geht man wieder direkt an die „/ Blog /“?

Ich verwende Dreamhost Shared Hosting, so dass meine Optionen zur Konfiguration des Servers begrenzt sind.

+0

Ich bin kein Dreamhost-Benutzer und ihre Knowledge Base-Bereich ist nur Abonnent, also habe ich keine Ahnung, was sie bieten: Führen sie Apache? lassen sie .htaccess-Dateien? Welche serverseitigen Programmiersprachen haben Sie verfügbar? – Guss

Antwort

2

Apache Unter der Annahme, mit mod_rewrite und Kontextberechtigungen seine Verwendung ermöglichen, setzen Sie das in der virtuellen Host-Konfiguration oder eine .htaccess:

RewriteEngine on 
RewriteRule ^$ /blog/ 
2

Eine Möglichkeit ist, ein ‚Ort‘ Header an den Client gesendet. Hier ist ein PHP-Beispiel:

<?php 

header('Location: http://www.codinghorror.com/blog'); 

?> 
3

Eine weitere Option ist mit mod_alias Apache eine dauerhafte Umleitung zu tun (entweder in .htaccess oder httpd.conf):

RedirectPermanent//blog 

Es gibt wahrscheinlich so viele Möglichkeiten, wie es Server und Programmiersprache (wahrscheinlich sogar mehr als das). Wenn Sie uns sagen, welche spezifische Technologie Sie verwenden, kann es wahrscheinlich helfen, Ihnen eine spezifischere Antwort zu geben.

6

Dies wäre eine gute Gelegenheit, sich selbst über HTTP-Statuscodes zu unterrichten. Lesen Sie die status code definitions section der HTTP 1.1-Spezifikation; Abschnitt 10.3, "Umleitung 3xx", behandelt die für Ihre Frage relevanten Statuscodes. Wenn Sie die HTTP-3xx-Codes kennen, können Sie eine Antwort senden, die genau die Semantik hat, die Sie beabsichtigen. Wenn Sie beispielsweise die Umleitung auf immer durchführen möchten, können Sie HTTP 301 "Permanent verschoben" verwenden. Theoretisch könnte ein Client die HTTP 301-Antwort als Signal verwenden, um den neuen URL-Wert anstelle des alten zu speichern.

Ihre Konfigurationsoptionen bei Dreamhost sind nicht so begrenzt, wie Sie denken, weil Sie viele Apache-Webserver-Konfigurationsrichtlinien in einer versteckten .htaccess Datei angeben können. Diese Datei sollte in einem Webdokumentverzeichnis abgelegt werden. Mit Ihrem Beispiel würden Sie es in das Stammwebdokumentenverzeichnis, /home/midas/codinghorror/, platzieren, obwohl .htaccess-Dateien in jedem von Apache bereitgestellten Verzeichnis abgelegt werden können. (Denken Sie daran, den führenden Punkt in den Dateinamen einzufügen.) Der Inhalt wäre entweder das bereits erwähnte Beispiel mod_alias oder das Beispiel mod_rewrite.

Beachten Sie, dass die Direktive RedirectPermanent von mod_alias einen HTTP 301-Statuscode für Sie sendet. Wenn Sie mod_rewrite nutzen wollen, dies zu tun, könnten Sie den Statuscode angeben:

RewriteEngine on 
RewriteRule ^$ /blog/ [R=301] 

Wenn Sie [R] verwenden, ohne einen Code, dann HTTP 302 ("Moved Temporarily") verwendet wird.

Da PHP auch für Sie verfügbar ist, ist das auch eine Option, obwohl es möglich ist, dass die obigen Optionen mit .htaccess schneller sind. Sie würden eine Datei namens index.php in /home/midas/codinghorror/ platzieren und den von Jeremy Ruten oben angegebenen Code verwenden. Auch hier können Sie einen Statuscode in dem dritten Argumente angeben() auf Header:

Ansonsten
<?php 
header('Location: http://www.codinghorror.com/blog', TRUE, 301); 
?> 

, eine HTTP 302 Statusantwort PHP header() Funktion mit 'Location' standardmäßig senden.

Verwandte Themen