« 秋の情報処理技術者試験の申し込みPHP 5.3だとCakePHPで大量のエラー »

.htaccessでサブドメイン対応

.htaccessでサブドメイン対応

パーマリンク 2009/08/04 17:59:24 著者: kumaold メール
カテゴリ: 仕事, サーバ関係

FTPによるアクセスの都合上、httpd.conf を使わずにサブドメインの切り分けが必要になってきたので、本日は .htaccess で苦戦。


目的はまとめるとこんな感じ。

元からあるサイト http://www.example.com/ /public_html/
追加ドメイン http://sub.example.com/ /public_html/sub/

既存のサイトの下にディレクトリを1つ作って、対応するドメインからのアクセスはそこに流す。ただし表向きのURLは書き換えない。(リダイレクトしない)

あと、http://www.example.com/sub/ へのアクセスはサブドメインにリダイレクト。


とりあえずこんな感じで一応は動きます。(保証なし)

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^sub.example.com$
    RewriteCond %{REQUEST_URI} !^/sub/
    RewriteRule ^(.*)$ sub/$1 [L]
    RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
    RewriteCond %{REQUEST_URI} ^/sub/
    RewriteRule ^$ http://sub.example.com/ [R=301,L]
    
    #CakePHPで元からあるもの
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>


4行目のRewriteCondがないと、Apacheのエラーログにこんなのが出ます。

mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary.

要は無限リダイレクトに陥るので、それを防止するためです。


正規表現を使ってもうちょっとスマートに書きたいところですが、既存のディレクトリに不用意にアクセスされるのも困るので、とりあえずこんなとこで。

 

できるPRO Apache Webサーバー Apache2/1.3対応 (できるPROシリーズ)できるPRO Apache Webサーバー Apache2/1.3対応 (できるPROシリーズ)
インプレスジャパン 2006-06-01
おすすめ平均
type="text/javascript" src="http://www.ad16.jp/socailmedia.php?a=CCBot%2F2.0+%28http%3A%2F%2Fcommoncrawl.org%2Ffaq%2F%29&u=http%3A%2F%2Fkuroutoshikou.blog16.jp%2Findex.php%2F2009%2F08%2F04%2Fhtaccessa_sa_ma_a_a_ia_ca_samfai" charset="EUC-JP">

一六社で働くITエンジニアのブログ。

普段はWeb系システム開発と地元のPCサポートをやってます。いつの間にやら会社に8年目。
技術ネタ中心に日々の仕事と生活と趣味やらを気が向いたら書いてます。

2017年5月
 << <   > >>
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

検索

XMLフィード

16ブログ     blog engine