カテゴリー
Linux

CentOS5x Apache mod_rewrite の設定

当サイトの「郵便番号住所検索サービス」サンプルのURL パラメータ(“yubin/?zipcode=1234123”) を階層として (“yubin/1234123/” ) 使用できるように、 mod_rewrite を使ってURLを置き換ています。

その方法をご紹介します。

mod_rewrite のインストールと有効化

まずは、mod_rewrite がインストールされているかを確認します。

CentOS インストール時または、後から apache を yum コマンドでインストールした場合は、mod_rewriteは入っていると思います。 下記フォルダを確認して、mod_rewrite.so があればインストールされています。

# ll /etc/httpd/modules/mod_rewrite.so

次に、httpd.conf で、mod_rewrite モジュールが読み込まれているかを確認します。コメントにされている場合は、コメントを外します。

--- httpd.conf 抜粋 ---
#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
...(省略)...
LoadModule rewrite_module modules/mod_rewrite.so
...(省略)...

mod_rewrite の設定

冒頭で説明したとおり、

.../yubin/getaddress/1234567/

へアクセスにきたら:

.../yubin/getaddress.php?zipcode=1234567

を実行し、ブラウザのURL表示はもとのURL(アクセスしたURL)を表示する。

これを実現するために、以下の yubin.conf を作成して、/etc/httpd/conf.d/ ディレクトリに配置します。

--- .htaccess ---
<Directory /wwwroot/samples/yubin>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^getaddress/([0-9]+)/?$ getaddress.php?zipcode=$1 [L]
</Directory>
--------------------------

RewriteEngine ディレクティブは、リライト(書き換え)エンジンを無効 (Off) または、有効化(On)にします。

RewriteCond ディレクティブは、ルールの条件を指定します。 %{REQEST_FILENAME} はサーバー変数(Server Variables) の一つで、上記の例の場合、ファイルが存在しないか、ディレクトリが存在しない場合にルールを適用するということになります。

RewriteRule はディレクティブはルールを記述します。アクセスにきた getaddress 以下の階層ディレクトリを正規表現で一致したパターンのURLに書き換え実行します。

ここで、apache を再起動します。

# service httpd restart

動作確認

https://www.northwind.mydns.jp/samples/webservice/getaddress/370/

を実行すると、CSV形式で郵便データがリターンされます。

また、以下の形式でも同じ結果が得られます。

https://www.northwind.mydns.jp/samples/webservice/getaddress.php?zipcode=370

カテゴリー
Linux

ダイナミックDNSへIPアドレスの通知

当サイトは自宅サーバーで運用していて、固定IPアドレスを取得していません。

そのため、私的DynaicDNS を利用して、プロバイダから提供されるダイナミックIPアドレスを定期的に通知して、ドメイン名 www.northwind.mydns.jp でアドレス解決ができるようにしています。

私的 DynamicDNSでは、IPアドレスの更新方法としてWebページにアクセスする方法と、POPメール認証と、FTP認証が用意されています。

私はPOPによる方法を使っています。

POPサーバーにアクセスして自動的にメールを取得するアプリケーションのfetchmail を利用してIPアドレスの通知を行う方法をご紹介します。

1. まず、fetchmail をインストールします。

# yum install fetchmail

2. 次に su になってから、エディタで /root/.fetchmailrc ファイルを作成して、下記に内容を保存します。

defaults
  no rewrite
  no mimedecode

poll mail.mydns.jp
  protocol pop3
  username MyDNSのユーザーID
  password MyDNSのパスワード

3. 保存したらファイルのアクセス権限を変更します。

# chmod 710 /root/.fetchmailrc

4. fetchmail を定期的に実行するように cron の設定をエディタで行います。

# crontab -e

または

EDITOR=/usr/bin/gedit crontab -e

5. 10分おきに更新するように下記のように入力します。

*/10 * * * * /usr/bin/fetchmail --all >/dev/null 2>&1

6. 保存してエディタ を終了します。

以上です。

参考:
https://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=FFFFFF&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tmorita-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=4881666630