【Apache】htaccessのRewriteでGETパラメータも残す

nginxが台頭してきている今日この頃。Apacheの話です。
少しハマったのでメモします。

■環境
CentOS 6.6
httpd 2.2.15

htaccessにてリダイレクト処理を記載する際、
以下のように書くとGETパラメータがリダイレクト時に落ちてしまいます。
RewriteEngine on
RewriteBase /
RewriteRule ^api.php(.*)$ api2.php$1

例えば、このまま「https://sample.com/api.php?name=tanaka」にアクセスすると
リダイレクト後は「https://sample.com/api2.php」となってしまいます。

RewriteでGETパラメータを扱いたい場合は、『RewriteCond』を使って以下のように記載します。
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^api.php$ api2.php?%1

これで「https://sample.com/api.php?name=tanaka」にアクセスすると
リダイレクト後は「https://sample.com/api2.php?name=tanaka」となります。
※RewriteRuleの右側「$1」ではなく「%1」です。間違えないように。

何が起こっているかというと、RewriteCondの『QUERY_STRING』で指定した正規表現に一致する
GETパラメータが%変数に格納されているようです。
例えば以下のような記載もできます。
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} name=(.*)$
RewriteRule ^api.php$ api2.php?onamae=%1

これで「https://sample.com/api.php?name=tanaka」にアクセスすると
リダイレクト後は「https://sample.com/api2.php?onamae=tanaka」となります。

正規表現で複数パラメータを取ることも可能なので、
RewriteCond %{QUERY_STRING} param1=([a-z]+)&param2=([a-z]+)&param3=([a-z]+)$
と記載すれば、param1は「%1」、param2は「%2」、param3は「%3」で取得できます。

Share

【golang】NetBeansでgo言語を使えるようにする

元々NetBeansでPHPをやっているので
同じIDEでgoも使うために設定してみました。
■環境
Ubuntu 16.04
NetBeans 8.1

①「http://plugins.netbeans.org/plugin/25606/go」からnbmファイルをダウンロードする。
②NetBeansのメニューより「Tools->plugin」を選択
③Downloadedタグにて「Add Plugins」をクリックして、ダウンロードしたnbmファイルを選択する。
④「Install」ボタンをクリックする。
⑤Installを進めていき、最後にNetBeansの再起動をして完了。

以上でgoが使えるようになります。
新規プロジェクトでHTML5プロジェクトなどを作成し、プロジェクト内でファイルの新規作成を選択すると
ファイルのカテゴリにGoが追加されています。

※2017/1/31 追記
GOプロジェクトを作成できるようになるプラグインも見つけました
http://plugins.netbeans.org/plugin/62162/go-project

Share

【Ubuntu】シャットダウンが遅い

■環境
Ubuntu 16.04

Ubuntuを16.04にしたら、シャットダウンに時間がかかるようになったので対応します。
参考:http://sicklylife.at-ninja.jp/memo/ubuntu1604/settings.html

システム設定ファイルを修正します。
# vim /etc/systemd/system.conf
〜以下項目のコメントアウトを外して修正〜
DefaultTimeoutStopSec=10s

Share

【Ubuntu】デュアルブート環境で時計が狂うのを防ぐ

■環境
Ubuntu 16.04
Windows10

Ubuntuを16.04にしたら、デュアルブートのWindowsとUbuntuを切り替えた際に
時刻がズレるようになったので対応します。
参考:http://sicklylife.at-ninja.jp/memo/ubuntu1604/settings.html

ターミナルで以下をコマンドを実行するのみです。
sudo timedatectl set-local-rtc true

Share

【Ubuntu】zsh&preztoのインストール

Ubuntuのターミナル(端末)でzsh&preztoを使う設定です。
Macの場合はこちら

■環境
Ubunt16.04

①zshとgitをインストールしておきます
16.04から「apt−get」ではなく「apt」になったようです。
$ sudo apt install zsh
$ sudo apt install git

②preztoを導入します。
基本的な流れは「https://github.com/sorin-ionescu/prezto」の通りです。
$ zsh
※設定画面が開いたら「q」を入力して抜ける。

$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
$ chsh -s /usr/bin/zsh

次にpreztoを使うようにzshの設定をします。
ターミナルに以下を貼り付けて実行します。(スクリプトファイルなどを作成する必要はなく、ターミナル直貼り付けでOK)
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

これでターミナルを開き直せばzshになるはずなのですが、なぜか端末を開き直してもzshにならなかったので
ターミナルのメニューから「編集->プロファイル編集」を開き、コマンドタブにてカスタムコマンド『zsh』を設定しました。

Share