Kの雑記

最近忘れやすいので、備忘録がわり

Apacheのhttpd.conf

httpd.confの基本

xxRootの話

  • ServerRootはhttpdのインストール先のパス。conf等が置かれる。
  • DocumentRootはHTMLドキュメントのパス。これより上位にはいけない。

Directoryの話

  • はServerRootディレクトリに対する設定(らしい???)
  • 二度目に出てくるではドキュメントルートを記載する

moduleがロードされているか確認

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]

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>