2009-03-29 4 views
1

www.codinghorror.comに行くと、自動的にwww.codinghorror.com/blogシンプルなウェブサイトのリダイレクトはどのように実装しますか?

にリダイレクトされます。どのように「/ blog /」にリダイレクトされますか?

私はDreamhost Shared Hostingを使用しています。そのため、サーバーを設定するオプションは限られています。あなたは、仮想ホストの構成や.htaccessファイルでこれを入れて、その使用を許可するmod_rewriteをして、コンテキスト権限でのApacheを想定し

+0

私はDreamhostユーザーではなく、彼らの知識ベースはサブスクライバだけなので、提供するものは何もわかりません。彼らはApacheを実行していますか? .htaccessファイルを置くことができますか?どのようなサーバー側のプログラミング言語がありますか? – Guss

答えて

2

RewriteEngine on 
RewriteRule ^$ /blog/ 
2

一つの方法は、クライアントに「場所」ヘッダを送信することです。ここではPHPの例です:あるとして

RedirectPermanent//blog 

は、おそらく多くの方法があります。

<?php 

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

?> 
3

別のオプションは、(.htaccessのどちらかではhttpd.conf)恒久的なリダイレクトを行うには、Apacheのmod_aliasを使用していますサーバーとプログラミング言語(おそらくそれ以上)使用している特定の技術を教えていただければ、より具体的な回答を得ることができます。

6

これは、HTTPステータスコードについて教える良い機会になります。 HTTP 1.1仕様のstatus code definitions sectionを読んでください。第10.3項「Redirection 3xx」では、質問に関連するステータスコードについて説明します。 HTTP 3xxコードを知っているということは、意図したセマンティクスを正確に持つレスポンスを送信できることを意味します。たとえば、へのリダイレクトを常ににする場合は、HTTP 301、「Moved Permanently」を使用できます。理論的には、クライアントはHTTP 301レスポンスを古いURLの代わりに新しいURL値を格納するシグナルとして使用できます。

Dreamhostの設定オプションは、隠された.htaccessファイルに多くのApache Webサーバー設定ディレクティブを指定することができるため、思うように制限されません。このファイルは、Webドキュメントディレクトリに配置する必要があります。あなたの例を使って、ルートWebドキュメントディレクトリの/home/midas/codinghorror/に配置しますが、.htaccessファイルはApacheが提供する任意のディレクトリに置くことができます。 (ファイル名に先頭のドットを含むことを覚えておいてください)。その内容は既に述べたmod_aliasの例またはmod_rewriteの例のいずれかになります。

mod_aliasのRedirectPermanentディレクティブは、HTTP 301ステータスコードを送信することに注意してください。あなたは、コードなし[R]を使用している場合

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

、その後、HTTP 302(「一時的に移動」)が使用されている:あなたがこれを行うにはmod_rewriteを使用したい場合は、ステータスコードを指定することができます。

PHPも利用可能ですので、これもオプションですが、上記の.htaccessを使用するオプションは高速かもしれません。 index.phpというファイルを/home/midas/codinghorror/に置き、上記のJeremy Rutenによって与えられたコードを使用します。再び、あなたが)(ヘッダ第3引数にステータスコードを指定することができる:

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

そうでない場合、HTTP 302ステータス応答を送信する「場所」デフォルトでPHPのヘッダ()関数を使用して。

関連する問題