Apache .htaccess でURLを書き換え

Apache

Apache .htaccess でURLを書き換え

拡張子(.phpなど)を隠ぺいしたいとか、SEO対策のためにクエリーパラメーターを表示したくない時、Apacheにはmod_rewriteというモジュールがあり、それを利用してたとえば次のようなことができます。

URLはhttp://hogehoge.com/abc.htmlにアクセスしている

本当は、http://hogehoge.com/index.php?action=abcにアクセスしている

 //上記を.htaccesに記述する例
 <IfModule mod_rewrite.c>
 	RewriteEngine on
    	RewriteRule  ([0-9a-zA-Z_\-\/]+).html$ index.php?action=$1    [L]
 
 </IfModule>

mod_rewriteがうまく動作しない時

Apache Basic認証または特定のIPアドレスからのアクセスを許可する

Apache

Apacheで特定のIPアドレス(又はホストやドメイン)からのアクセスは自動で許可し、それ以外のIPアドレスからのアクセスはBASIC認証を要求するようにしたいことがあります。

Satisfy Anyを使うと、複数のアクセス制限を設定してそのいずれかが満たされればアクセスを許可するようにできます。

下記例では、192.168.1.10からのアクセスは無条件に許可し、それ以外のIPアドレスからのアクセスに対してはBASIC認証を要求します。

 Order deny,allow
 Deny from all
 AuthName "htaccess password prompt"
 AuthUserFile /var/www/html/.htpasswd
 AuthType Basic
 Require valid-user
 Allow from 192.168.1.10
 Satisfy Any

Apache Directory index forbidden by Options directive

Apache

Apache Directory index forbidden by Options directive

Apacheのエラーログに

 Directory index forbidden by Options directive

と書かれている場合、次を変更すれば治るかもしれません。

  1. 該当のディレクトリにindex.htmlなどが置かれていない、さらにその場合、ディレクトリの閲覧を禁止している Options -Indexesで変更する
  2. ディレクトリのパーミッションを変更する
  3. ディレクトリのownerを確認する

Apache SSL証明書の有効期限を監視する

Apache

certwatchというプログラムでApacheのSSL証明書の有効期限を監視できます。

redhat系であれば下記コマンドでインストールできます。

 yum install crypto-utils

yumでインストールすると/etc/cron.dailyに、毎日チェックして有効期限が30日以内になるとアラート送信するスクリプトが登録されます。

なお、監視対象となるSSL証明書は、下記コマンドで取得しています。

 httpd -t -DDUMP_CERTS

Apache Use LogLevel debug to get a backtrace.

Apache

Apache Use LogLevel debug to get a backtrace.

Apacheのログのレベルを変更すると、より詳細にログを取得することができます。

httpd.confに

 LogLevel debug

と書いておくとログレベルがdebugになります。