2013-04-04 2 views
5

私は以下の方法で.htaccessを使ってリダイレクトしようとしています。私は.htaccessに精通しているわけではないので、それができるかどうかはわかりません。また、私はそれをやろうとしている方法がSEOのベストプラクティスに従っているかどうかもわかりません。存在しないサブドメインをどのようにリダイレクトするのですか?

www.domain.com    > domain.com 301 

ks.domain.com     > kansas.domain.com 301 

ia.domain.com     > iowa.domain.com 301 

domain.com/sites    > domain.com 301 

domain.com/sites/iowa   > iowa.domain.com 301 

nonexistent.domain.com  > domain.com 302 

domain.com/sites/nonexistent > domain.com 302 

私の最大の質問は、存在しないサブドメインを検出してリダイレクトできるかどうかです。私は上記のすべてがどのように達成されているかを見たいと思う。

+2

受け入れ答えについては不明である何:これはまた、任意のディレクトリに適用されることを

注意? – Sumurai8

+0

「存在しない」とは、実際にサブドメインが存在することを意味しますが、それに対応するWebサイトはありません。 –

+0

はいアレクシス。つまり、 '.domain.com'を' domain.com/* 'に転送し、そのフォルダ(ウェブサイト)が存在しない場合は' domain.com'にリダイレクトします。受け入れられた答えは、これをどうやって行うかについてかなり詳しく述べられていました。 – TheHerk

答えて

7

最初に、ウェブホストが許可する場合にのみ、*という名前のサブドメインを作成して、ワイルドカードサブドメインを追加する必要があります。それが存在し、ファイルサイズを持っている場合、

Options +FollowSymlinks 
RewriteEngine on 

RewriteCond %{HTTP_HOST} ^www\.domain\.com 
RewriteRule ^(.*)$ http://domain.com/$1 [R=301] 

RewriteCond %{HTTP_HOST} ^ks\.domain\.com 
RewriteRule ^(.*)$ http://kansas.domain.com/$1 [R=301] 

RewriteCond %{HTTP_HOST} ^ia\.domain\.com 
RewriteRule ^(.*)$ http://iowa.domain.com/$1 [R=301] 

RewriteCond %{HTTP_HOST} ^domain\.com 
RewriteCond %{REQUEST_URI} ^/sites/?$ 
RewriteRule ^(.*)/[R=301] 

RewriteCond %{HTTP_HOST} ^domain\.com 
RewriteCond %{REQUEST_URI} ^/sites/iowa/?$ 
RewriteRule ^(.*) http://iowa.domain.com/ [R=301] 

RewriteCond %{HTTP_HOST} ([a-z0-9-]+)\.domain\.com$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*) http://domain.com/ [R=302] 

RewriteCond %{HTTP_HOST} ^domain\.com 
RewriteCond %{REQUEST_URI} ^/sites/([a-z0-9-_]+)/? 
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteRule ^(.*) http://domain.com/ [R=302] 

ちょうど要求されたファイルが存在するかどうかをテストする-fを使用し、通常のファイルである-sを:そしてこれはあなたの.htaccessでなければなりません、それが動作するかどうかを確認するためにそれをテストしてみてください0より大きい値、-dが存在するかどうかをテストし、ディレクトリであるかどうかを調べます。

+1

ご協力いただきありがとうございます。それは私の.htaccessを設定する上で私を長い道のりにしました。もしできれば、私はあなたに答えて投票します。多分いつか。 – TheHerk

+1

@ TheHerk動作しましたか? – 5ervant

+2

はい。私は構造が変わったので少し違ってやってしまいましたが、あなたの情報は私が何をする必要があるのか​​理解する助けになりました。 – TheHerk

0

特定のサブドメインが存在しないようにするには、それらを作成してからリダイレクトするだけです。

すべての誤ったサブドメインをキャッチするには、誤ってmetaa.stackoverlow.comと入力し、ワイルドカード:*.stackoverflow.comを使用します。 cpanelでは、これは単に「ワイルドカードを作成する」というチェックボックスをチェックするだけです。または類似。 .htaccessを直接編集するには、各サブドメインの代わりに*と入力してください。 Johnsonmk2 @

subdomain.site.com/*

*.site.com/dir

*.site.com/*

関連する問題