Apacheのhttpd.conf
httpd.confの基本
xxRootの話
- ServerRootはhttpdのインストール先のパス。conf等が置かれる。
- DocumentRootはHTMLドキュメントのパス。これより上位にはいけない。
Directoryの話
はServerRootディレクトリに対する設定(らしい???) - 二度目に出てくる
ではドキュメントルートを記載する
moduleがロードされているか確認
- httpd -M
httpd.confの設定が正しいか確認
- apachectl configtest
特定のURLで指定のサイトに行く方法(mod_rewrite)
- httpd.confで設定する。
- /var/www/htmlで設定するより、特定のURLに絞った方が良いのか?よくわからん・・・
下記はhttp://host/test
へのアクセス時、googleにリダイレクトする
[root@web01 conf.d]# cat rewrite.conf <Directory "/var/www/html/test"> #デフォルトはRequireAny #<RequireAll> # 全て許可するが Require all granted #Require all denied # 192.168.1.1 は拒否 #Require not ip 192.168.1.1 #</RequireAll> # rewriteのときはFollowSymlinksを有効にしろと書いているが、無効でも動く... Options Indexes FollowSymLinks # rewrite to another url RewriteEngine On # Directoryが"/var/www/html"の場合 #RewriteRule ^test/(.*) http://www.google.co.jp [R=302,L] RewriteRule ^(.*) http://www.google.co.jp [R=302,L] </Directory>
RewriteRuleの注意点
- VirtualHostコンテキストの場合、トップから/を指定する
RewriteRule ^/test/(.*) http://www.google.co.jp [R=302,L]
- Directoryコンテキストの場合、相対ディレクトリとなる
RewriteRule ^test/(.*) http://www.google.co.jp [R=302,L]
VirtualHostの設定
- 1台のApacheで複数のドメインを扱う場合に利用
- httpd.confでデフォルト定義しているdocumentRoot(/var/www/html)やServerNameの定義と、VirtualHostの設定が混在すると、私の環境ではVirtualHostの設定が有効となり、デフォルト定義された/var/www/html配下が見えなくなった。この場合はデフォルト定義もVirtualHostに切り出してやるとよい。
NameVirtualHost
は2.4系ではhttpd.confに設定不要
httpd.confの設定
... ServerName www.web01.com:80 ... DocumentRoot "/var/www/html" <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
新たにVirtualHostを追加
- 既に設定済みのhttpd.confの設定はそのままにして、myhost.comのVirtualHostを追加したい場合、myhost.comのVirtualHostの他に既存のhttpd.confの設定値もVirtualHostに変更してあげるとうまくいく(というか、このやり方しかわからない)
[root@web01 conf.d]# cat myhost.com.conf <VirtualHost *:80> DocumentRoot /var/www/myhost.com ServerName myhost.com ErrorLog logs/myhost.com-error_log CustomLog logs/myhost.com-access_log common </VirtualHost>
[root@web01 conf.d]# cat www.web01.com.conf <VirtualHost *:80> # httpd.confの設定の引越し DocumentRoot /var/www/html ServerName www.web01.com ServerAlias web01 <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> ErrorLog logs/www.web01.com-error_log CustomLog logs/www.web01.com-access_log common </VirtualHost>