Googleアナリティクスでアクセス解析をしたい〜導入編〜

 

この前、初めて友達の結婚式にいきました。感動しましたー。
最近の結婚式ってプロジェクションマッピングとかするんですね、時代の進化を感じました。

 

さて、本題です。
私は仕事で、Googleアナリティクスタグや、Googleタグマネージャーを調整して設置をすることはよくあるのですが、
Googleアナリティクスの画面(グラフとかあるやつ)を使ったことも見たこともないのです。

 

そこで!

このブログとこの前作った名言API使用例のサイトに
Googleアナリティクスタグ(正確に言うとGoogleタグマネージャ)を設置してみました!
その結果わかったこととかを書きます。

わかったこと(まとめ)

●Googleアナリティクスにある グローバル サイトタグ(gtag.js)と Google タグマネージャ(コンテナスニペット)は違う!

→Googleタグマネのが便利でプレビューとかもできて親切な感じ。
今回はタグマネ使う方法を書きます。

●Googleアナリティクスを毎朝見るのが日課になる。成長記録みたいで楽しい。見える化ってすばらしい^^

次回、分析した結果わかったこと書きます。今回は導入編!

 

導入手順

①トラッキングID取得

②Google タグマネージャタグ取得

③タグの設定

④プレビュー →  公開

⑤フィルター設定

 

①トラッキングID取得

UA-XXXXX-Xっていうやつです。←webサイトごとに振り当てられる一意のID。

Googleアナリティクス>管理>トラッキングコード から取得できます。

あとで使います。アナリティクス⇄タグマネを連携させるために使います。

②Google タグマネージャタグ取得

<script>は<head>内に、<noscript>は<body>直後にはる。GTM-XXXXがはいってるやつ。コンテナスニペットともいうらしい。

Googleタグマネージャ>管理>Google タグマネージャをインストール から取得できます。

 

③タグの設定

Googleタグマネージャ>新しいタグを追加>タグ設定 にて

トラッキングタイプ「ページビュー」とし、

Google アナリティクス設定「新しい変数」より、①でゲットしたトラッキングIDをいれて登録すると、アナリティクス⇄タグマネの連携できます!

トリガー「All Pages」とすると、サイト内のすべてのページのアクセスを追跡できます。

タグに名前をつけておくと便利です。

 

④プレビュー →  公開

③より、タグを保存すると、Googleタグマネージャのヘッダーに

ワークスペースでの変更数: 1」みたいな感じででるので、

その変更を確認したいのであれば、隣の「プレビュー」ボタンを押して、自分のサイトを見てみてください。

こんな感じで、検証ツールみたいなのが出てきてると思います。

Tags Fired On This Page が今発火してるタグです。ここに③でつくったタグがあれば大成功です!公開を押せば、公開されます。

Googleタグマネージャのプレビューモード

 

⑤フィルター設定

自分で閲覧した時に集計されては、正確な分析ができないので

IPでフィルターを設定します。

Googleアナリティクス>管理>すべてのフィルター より追加できます。

最後に…

今回のGoogleアナリティクス導入にあたって、読んだ本がこれです。

タグ設置したことあるけど、その先の分析の方法やどう役に立ってるのかがわからない技術系の私にとってはいい本でした!読みやすいです。

アサーション入門 ~自分も相手も大切にする自己表現法 (著)平木 典子

 

技術系ではない上司に勧められた本でした。

 

私自身、人と話すことは好きなんですが、頭が悪いのか伝えることと理解することが、苦手です・・・。

 

なので、頼みたいことがあって、

依頼内容が伝わらない→ちょいイライラ気味で一方的に話す→それでも伝わらない→あきらめて自分でやろーってなる

さらに、人の話が理解できない時、理解することが面倒になって聞き流すことも多いですww

こんな感じで、コミュニケーション怠ってます。

 

それを見かねたのかおすすめされました。

コミュニケーションの大事さはもちろんのこと、自分も相手も尊重して話すことができれば、すれ違いもストレスも減って、生きやすいなーって思いました。

 

アサーティブになるためのポイント

  1. 自分の素直な気持ちを曖昧でも言語化して伝える
  2. 相手の表現、気持ちも尊重して受け止める
  3. 状況や事実を相手と共有する
  4. 意見が対立しても、人にはそれぞれ価値観があるし、気持ちが変化することもあると受け入れる。
  5. 自分の感情、表現には責任を持つ。人のせいでない。
  6. 問題を解決する必要がある場合は提案する。どうしようもないと思わない。
  7. どうしてもだめなときはあきらめる。

 

こういう話ってすごい納得するし、当たり前な話っぽいんですが、

実践するのが難しいですよね!

とりあえず、自分に素直になって、人の話もちゃんと最後まで聞こうと思います。

 

 

自分も相手も大切にする自己表現、コミュニケーションについての本でした。

BEAR.SundayでAPIを作ってみた。

 

ども!最近、久々の一人暮らしになった私です。自由ですね。

前回の記事でクイックスタートをやってみたBEAR.Sundayですが、
APIが簡単に作れるということで、なんか使えるAPI作りたいなと考えました。

 

\名言APIを作りました。/

https://today-saying.herokuapp.com/

名言チョイスはわたし好みです。リロードしたらランダムにでます。
偉人のお言葉ってなんか元気でます!元気ない人は是非みてください!!

(攻撃はやめてくださいねw)

〜こんなやーつ〜
・名言を登録できる(INSERT)
・名言を削除できる(DELETE)
・名言をランダムに返す(RANDOM)
・名言一覧を返す(SHOW)

〜使ったもの〜
・PHP
・BEAR.Sunday
・SQLite3
・heroku

 

ソースはこちら。herokuでデプロイするために、調整してます。
https://github.com/kin29/bear-work

 

API:https://today-saying-sqlite.herokuapp.com/?mode=show

 

 

これ作るにあたって、わかったこととか後々書こうと思いますー

とりあえず、披露したかっただけです^^

 

SublimeTextで愛用している機能

 

わたし自身、コード書く時はPHPStomeを使ってるんですが、

メモやCSV整形、CSV/TSV→SQL文とかマークダウン形式に変更するときはSublimeTextをめちゃくちゃ使ってます。

超便利なものがあるんです。ご存知かもしれませんが教えちゃいます。

 

 

DataConverter

たとえばこんなtsv形式のデータがあります。

id title body
1 top トップですよ。
2 detail 詳細ですよ。

↑のSQL文を作る時、まあまあだるいですよね。タイポとかもしたくないし…。

 

\それがなんとSublimeなら一瞬でつくってくれるんです!!!/

 

■事前準備

・DataConverterをInstall Packageしておく。

 

■手順

(1) tsv形式データを開いたタブ上で Ctrl + option + P

(2)「DataConverter: to PosgresSQL」を選択

(※MySQL/SQLite/JSON/CSV/PHP等もあります!)

(3)できあがり。以下のsql文に変換されます。

 

CREATE TABLE IF NOT EXISTS DataConverter (
	id serial,
	id integer,
	title text,
	body text
);
INSERT INTO DataConverter
	(id, title, body)
VALUES
	(1, 'top', 'トップですよ。'),
	(2, 'detail', '詳細ですよ。');

「DataConverter」の部分はテーブル名に合わせて変更し、

id定義は適宜どっちかだけにしてもらえば、もう完成ですね。

(IF NOT EXISTSも必要なければ削除しちゃいましょう。)

 

 

もう一個、最近使ってる機能があります。

Sublimerge

という差分を見る機能。
これはEditerなら大概ある機能なんですが、csvをSublimeで見るのでバックアップファイルとの差分みるときに使っています。

 

■事前準備

・SublimergeをInstall Packageしておく。

 

■手順

(1) 比較対象A,Bのファイルをタブで開いておく

(2)比較対象A(またはB)の上でCtrl + option + P

(3)「Sublimerge: Compare to View…」を選択

(3)現在開いているタブのファイル名がプルダウンが出てくるので比較対象B(またはA)を選択する

(4)差分が出てきます。

MySQLとPostgreSQLのコマンド比較してみる。

前回記事で、コメントの比較しましたが、

これ→ MySQLとPostgreSQLのコメントの書き方のちがい

その実験してたときに、MySQL・PostgreSQLそれぞれのコマンド使ってたんですが、

なかなか違ってて使い分けムズってなったので、メモ用にとのことで書きまーす。

 

参考:

https://qiita.com/aosho235/items/c657e2fcd15fa0647471

https://qiita.com/tamano/items/be43de7bb733ad38362c

 

 

■接続

MySQL
ポイント → 「 -p 」を忘れがち。

mysql -u [ユーザ名] -p
Enter password: 

 

PostgreSQL

psql -U [ユーザ名]
Password for user [ユーザ名]: 

 

 

■データベース一覧をみる

MySQL

[ユーザ名]> show databases;
+--------------------+
| Database           |
+--------------------+
| db_name1           |
| db_name2           |
+--------------------+
3 rows in set (0.00 sec)

postgreSQL

[ユーザ名]=# \l
                                    List of databases
        Name         |    Owner     | Encoding | Collate | Ctype |   Access privileges   
---------------------+--------------+----------+---------+-------+-----------------------
db_name1             | table_user   | UTF8     | C       | C     | 

 

 

■データベースの切り替え

MySQL

[ユーザ名]> \u test_db
Database changed

postgreSQL

[ユーザ名]=# \c test_db
You are now connected to database "test_db" as user "[ユーザ名]".
test_db=# 

 

■テーブル一覧をみる

MySQL

[ユーザ名]> show tables;

postgreSQL

[ユーザ名]=# \d

 

■テーブル定義を確認

MySQL

[ユーザ名]> DESC test_table;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| title | varchar(255) | YES  |     | NULL    |                |
| body  | varchar(255) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

postgreSQL

[ユーザ名]=#\d test_table
                         Table "public.test_table"
 Column |  Type   |                        Modifiers                        
--------+---------+---------------------------------------------------------
 id     | integer | not null default nextval('test_table_id_seq'::regclass)
 title  | text    | 
 body   | text    | 

 

 

■SQLダンプ出力

MySQL

su - [ユーザ名]
mysqldump -p [データベース名] [テーブル名] > [ファイル名].sql

PostgreSQL

su - [ユーザ名]
pg_dump (-t [テーブル名]) [データベース名] > [ファイル名].sql

 

 

うーん地味に違う。

覚えきらんですねw

MySQLとPostgreSQLのコメントの書き方のちがい

 

どーも、最近ベランダでビール飲むのにはまってます。

すずしくて気持ちええです。

 

普段PostgreSQLを使うことが多かったのですが、

MySQLを久々触る機会があったので、ある違和感感じました!

コメントの書き方が違う!!!

 

例えばこんなテーブルがあるとします。(PostgreSQLにて)

test_db=#SELECT *FROM test_table;
id | title | body
----+--------+----------------
1 | top | トップですよ。
2 | detail | 詳細ですよ。

 

「–」をつかったコメントを入りのSELECT文。よく使ってるやつ。

PostgreSQLでは問題なく使える。コメントって認識してくれてる。うん。

test_db=# SELECT
test_db-# id,
test_db-# --nameはいらない
test_db-# body
test_db-# FROM
test_db-# test_table;
id | body
----+----------------
1 | トップですよ。
2 | 詳細ですよ。
(2 rows)

 

 

\しかし/

MySQLだとお。。。

mysql> SELECT * FROM test_table;
+----+--------+-----------------------+
| id | title | body |
+----+--------+-----------------------+
| 1 | top | トップですよ。 |
| 2 | detail | 詳細ですよ。 |
+----+--------+-----------------------+

 

 

「–」をつかったコメントを入りのSELECT文。MySQLでは怒られる。

「–」以下をカラムと認識してる。コメントって認識してないみたい。

mysql> SELECT
-> id,
-> --nameはいらない
-> body
-> FROM
-> test_table
-> ;
ERROR 1054 (42S22): Unknown column 'nameはいらない' in 'field list'

 

 

調べてみたら、MySQLの場合、「–」の後に半角スペースがいるみたい。

参考:https://dev.mysql.com/doc/refman/5.6/ja/comments.html

まじだった・・・。半角スペースいれたらできたし!

mysql> SELECT
-> id,
-> -- nameはいらない
-> body
-> FROM
-> test_table
-> ;
+----+-----------------------+
| id | body |
+----+-----------------------+
| 1 | トップですよ。 |
| 2 | 詳細ですよ。 |
+----+-----------------------+
2 rows in set (0.00 sec)

 

 

他にも….

●「#」をつかったコメントを入りのSELECT文。お!コメントって認識したみたい。

※「#」の後に、半角スペースはない。

mysql> SELECT
-> id,
-> #nameはいらない
-> body
-> FROM
-> test_table
-> ;
+----+-----------------------+
| id | body |
+----+-----------------------+
| 1 | トップですよ。 |
| 2 | 詳細ですよ。 |
+----+-----------------------+
2 rows in set (0.00 sec)

 

●「/*」「*/」をつかったコメントを入りのSELECT文。

※「/*」の後に、半角スペースはない。

※ 改行しても「/*」「*/」内はコメントとして認識

mysql> SELECT
-> id,
-> /*
/*> nameはいらない
/*> */
-> body
-> FROM
-> test_table
-> ;
+----+-----------------------+
| id | body |
+----+-----------------------+
| 1 | トップですよ。 |
| 2 | 詳細ですよ。 |
+----+-----------------------+
2 rows in set (0.00 sec)

 

 

\ちなみに!/

PosgreSQLでも「/*」「*/」は使えたーーーーーーーーあ。

全くしらんかった….

test_db=# SELECT
test_db-# id,
test_db-# /*
test_db*# nameはいらない
test_db*# */
test_db-# body
test_db-# FROM
test_db-# test_table
test_db-# ;
id | body
----+----------------
1 | トップですよ。
2 | 詳細ですよ。
(2 rows)

 

 

まあ、けど、PosgreSQLで「#」は使えないみたいです。

test_db=# SELECT
test_db-# id,
test_db-# #nameはいらない
test_db-# body
test_db-# FROM
test_db-# test_table
test_db-# ;
ERROR: column "nameはいらない" does not exist
LINE 3: #nameはいらない

 

 

PostgreSQLとMySQLってなんだかんだ、似てるからだいたい同じやろって

思ってたけど、改めて違いを認識。

コマンドでもデータベース切り替えの書き方違ったりで、なかなか勉強になりました。

 

PHPerKaigiいってきました!

PHPerKaigi@ココネリに参加してきました。
練馬初上陸でした。池袋から一駅でアクセス良きでした。

\公式サイトはこちら/
https://phperkaigi.jp/2018/

3/9,10と開催されてたのですが、3/10のみ参加しました。
お昼ご飯マグロどーん!他にもサンドイッチ、焼肉弁当もありました。
エンディングと懇親会のビールの豪華さが、、、もう最高!
昼食のマグロ丼コーヒー 懇親会のビール

スポンサー様にとっても感謝です。
写真のセンスがないのは、ほっといてくださいw

すべてのセッションが印象的だったんですが、
その中でも2つのセッション内容を自分なりに落とし込んでみました。(自己満ですみません。)
・SOLIDの原則って、どんなふうに使うの?
・BEAR.Sunday

#SOLIDの原則って、どんなふうに使うの?

SOLIDの原則の一つであるオープン・クローズドの原則にフォーカスを当てたお話でした。
この原則については、自身でも過去にかいてます、実は。
このあたり

しかし、これって実践できてる気はしていません。
新人くんの気持ちわかる〜って思ったり、こうやったほうがいいんだろなとか考えさせられたセッションでした。

close →修正を行わない
open →機能を拡張できる
この2つを同時に満たすこと=OCP準拠 !
interface使いこなさなきゃなと思いました。

フレームワークを参考にしてみると、いいとのことで、
もっとフレームワークみなきゃなと痛感しました。

「OCP違反ですよ。」て言いたくなりました。

#BEAR.Sunday

敏腕元上司(あまり人を褒めない)が尊敬していた郡山さんのセッション。
本物の郡山さんに感動しました。
フレームワークBEAR.Sundayで使われてるDI・AOP・RESTのお話でした。

 

ともわれ、使ってみなきゃということで、
クイックスタートしてみました。次回はチュートリアルします!
(リンク:https://bearsunday.github.io/manuals/1.0/ja/quick-start.html)

まずは、composerでbear/skeletonをいれる。

composer create-project -n bear/skeleton MyVendor.MyProject

composer create-project [option] vendor/project target-directory
※ -n (–no-interaction) :対話的な質問の問い合わせはしないよ

 

作成されたMyVendor.MyProjectに入って、

cd MyVendor.MyProject

 

src/Resource/Page/Kin29.phpをつくって、

<?php 
namespace MyVendor\Myproject\Resource\Page; 

use BEAR\Resource\ResourceObject; 

class Kin29 extends ResourceObject { 
    public function onGet( string $word = 'morimori!!!' ) : ResourceObject              
    { 
        $this->body = [
             'getting' => 'kin29 ' . $word
        ];

        return $this;
    }
}

 

GETパラメータなしでリクエスト

$ php bootstrap/web.php get /kin29
200 OK
content-type: application/hal+json

{
    "getting": "kin29 morimori!!!",
    "_links": {
        "self": {
            "href": "/kin29"
        }
    }
}

 

GETパラメータ「word=man」でリクエスト

$ php bootstrap/web.php get /kin29?word=man
200 OK
content-type: application/hal+json

{
    "getting": "kin29 man",
    "_links": {
        "self": {
            "href": "/kin29?word=man"
        }
    }
}

ちょっとアレンジしてます。
GETパラメータ名「word」は、onGet関数の引数名と合わせればなんでもいいようですね。

まだまだ全然わかってません…チュートリアルささっとします。
アノテーションで機能を導かれ、機能となる
print_oすごかった!地下鉄の線路図みたいでした。

 

ほかのセッションで、Hackもやってみたいなと思いました。
型に厳しいということで不慣れなことが多そうですが。
チュートリアル:http://hacklang.org/tutorial.html

 

モチベーション上がるいい機会でした。

スタッフ&スピーカー&スポンサーの皆様ありがとうございました。

コンフリクとが起きた時によく使うコマンド

 

久しぶりです。暑くなってきましたね。

Gitでコンフリクと起きた時って、「うわーめんどー><」ってなりますよね。

けど絶対王政みたいな感じで、こっちのブランチが「絶対正しいんだ!」ってときありますよね。そんな時に便利なgitオプションが下記コマンドがあります。

# 2つのブランチ間でコンフリクトしているファイル aaa.txt があるとする

# aaa.txt を現在チェックアウトしているブランチ側の対応に合わせる場合
$ git checkout --ours aaa.txt

# aaa.txt をマージさせたブランチ側に合わせる場合
$ git checkout --theirs aaa.txt

 

いつも忘れるので、エイリアスを作ろうとおもいます。

 

alias git-i-am-king='git checkout --ours $1'
alias git-you-are-king='git checkout --theirs $1'

 

しかし、
よくみたら、そんなでもないので覚え方を考えようと思います。

私たちが正しいのでわたしたちになりましょう、ね、aaa.txtさん。

$git checkout --ours aaa.txt

彼らが正しいので彼らになりましょう、ね、aaa.txtさん。

$git checkout --theirs aaa.txt

 

以上、くだらない投稿でした。

WordPressのプラグインを作ってみる。

ソースコードはこちら
https://github.com/kin29/wp-plugin-test/tree/master/admin-header-message

 

プラグインって「ハードル高そう」って思ってました。

まだよくわかってないですが、思ったほど難しくなかったです!

 

参考:

https://wpdocs.osdn.jp/Main_Page

https://hatsuka.info/wordpress/gpl

 

 

コメントを以下のように記載すると、プラグインと認識してくれます。

/**
 * Plugin Name: AdminMessage Maker
 * Plugin URI: https://github.com/kin29/wp-plugin-test/tree/master/admin-header-message
 * Description: You can set your like message in admin-page header.
 * Version: 1.0.0
 * Author: kin29
 * Author URI: https://kin29.info
 * License: GPL2
 */
/*  Copyright 2018 ki29 (email : kin29.com@gmail.com)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License, version 2, as
	published by the Free Software Foundation.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

 

 

管理画面ではこんな感じ。

プラグイン詳細

 

 

「有効化」すると、こんななります。

左上に「hello,kin29!」と出てるのがプラグインのしわざです。

プラグインイメージ

 

\ソースの中身/

関数addTestは、WP_Admin_Barクラスの関数add_menuを使って、

idが my-menu のtitileが hello, kin29! のもの追加してます。(見たままw)

idに関しては、my-menuっていうのが既存であるのかと思ってましたが、

idの値はなんでもokでした。

titleの中身は表示させたい言葉はご自由に入れてください。

function addTest($x){
//$x='admin_bar_menu'
 $x->add_menu( array(
    'id' => 'my-menu',
    'title' => 'hello, kin29!'
  ) );
}
add_action('admin_bar_menu', 'addTest');

 

 

\add_action()何しとるん?/

グローバル変数の$wp_filterにキーとバリュー追加してるようですね。

上のコードを例にすると、

$wp_filter[‘admin_bar_menu’]に関数addTest()を追加したようです。

 

wp-include/plugin.phpより

function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
	return add_filter($tag, $function_to_add, $priority, $accepted_args);
}
function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
	global $wp_filter;
	if ( ! isset( $wp_filter[ $tag ] ) ) {
		$wp_filter[ $tag ] = new WP_Hook();
	}
	$wp_filter[ $tag ]->add_filter( $tag, $function_to_add, $priority, $accepted_args );
	return true;
}

 

 

 

\GPLとは?/

コメントアウトにある、License表記ですが、

部分はcodexでは以下のように書いています。

慣例として、標準プラグイン情報の次にプラグインのライセンス情報を書きます。多くのプラグインは WordPress と同じ GPL2、ないし GPL2 互換のライセンス (英文) を用いています。

多くのプラグインに沿って、GPL2と私は書いてます。

GPL=GNU General Public License。フリー(自由)ソフトウェアライセンスの事。WordPressやGithubなどはこのライセンスに属している。コピーライトの逆の「コピーレフト」であり、利用・改変・再配布ができる。GPLで配布したものが、再配布がされるとそれ自身もGPLとなり、自由の保証が広がっていき、良いコードがいろんな人の手で作られるのかなと思います。

 

 

\まとめ/

プラグインは意外と簡単にできる。(物によるが)

プラグイン情報(licenseとか)はちゃんと書こう!

 

リダイレクトについて

 

こんにちは、恵方巻きの季節ですね!
それにしても、無性にカラオケに行きたい気分です!

 

.htaccessの書き方というか、
リダイレクト処理がよくわかってなかったので、
いろいろ試してみたことを書きます。

 

リダイレクトとは?
→「出力先を変える」(=転送)です。

 

動きとして
その1、出力先のみを本来のものとは変える
例) https://ドメイン/old.htmlに アクセスしたけど、
出力内容はhttps://ドメイン/new.html である。

その2、出力先と表示URLを本来のものと変える
例) https://ドメイン/old.htmlに アクセスしたけど、
出力内容はhttps://ドメイン/new.html で、
URL欄もhttps://ドメイン/new.htmlになってる。

の2つがあるのかなって私は思ってます。

 

\ 想定動作 /
https://ドメイン/dummy/new.html にアクセスした
https://ドメイン/dummy/old.html の出力内容を表示させる。
※ .htaccess は dummy/ 直下に置くとする

 

まず、リダイレクトの可否を設定。
デフォルトはOffのため、
以下の記述をしないとリダイレクトはできませんでした。

RewriteEngine On

 

その1:
http://ドメイン/old.html でアクセスした時、
http://ドメイン/dummy/new.html の内容を表示する。
URL欄は http://ドメイン/dummy/old.html のまま

# オプション[L]で、以降のRewrite機能(RewriteRuleとか)の終了を意味する
RewriteRule ^old\.html$ new.html [L]

→ 正規表現パターン(^old\.html$)も置換パターン(new.html)も、
.htaccessがあるディレクトリからの相対パスっぽい。

….RewriteRuleの書き方

RewriteRule 正規表現パターン 置換パターン オプション

 

こんな書き方もある。

RewriteBase /dummy
RewriteRule ^old\.html$ new.html [L]

→ RewriteBaseは置換パターン(new.html)が相対パスの場合、使われる。
正規表現パターン(^dummy/old\.html$)に関係ないっぽい。

 

 

 

その2:
http://ドメイン/old.html でアクセスした時、
http://ドメイン/dummy/new.html の内容を表示する。
URL欄も http://ドメイン/dummy/new.html に変わる。

# [R]だけ(指定なし)だと302リダイレクト
RewriteRule ^old\.html$ /dummy/new.html [R]

→ http://ドメイン/dummy/new.html に。想定通り◎

 

RewriteRule ^old\.html$ /new.html [R] 

→ http://ドメイン/new.html に行っちゃう。

RewriteRule ^old\.html$ new.html [R]

→ http://ドメイン/home/アカウント/ドメイン/*****/dummy/new.html
にいってもうた!なんでだっけ?><

 

他にも2つもあり。

RewriteRule ^old\.html$ http://ドメイン/dummy/new.html [R]

↑個人的に絶対パスだし、見やすい。

RewriteBase /dummy
RewriteRule ^old\.html$ new.html [R]

 

 

■301リダイレクトを指定

RewriteRule ^old\.html$ http://ドメイン/dummy/new.html [R=301]

 

\ 疑問 /

■複数フラグのとき、書き順は関係ないの?

RewriteRule ^old\.html$ /dummy/new.html [L,R]
RewriteRule ^old\.html$ /dummy/new.html [R,L]

→ 挙動は同じに見えたので、関係なさそう?

ただ、

RewriteRule ^old\.html$ new.html [L,R]
RewriteRule ^old\.html$ new.html [R,L]

だと、http://ドメイン/home/アカウント/ドメイン/*****/dummy/new.html
にいってもうた![R]だけの時と同じ感じ。ってことは、R→Lの順番なのか?

 

フラグ「L」「R」について

L :マッチしたらRewriteを止めます。以降のルールは無視する

R :指定したURLに変える。[R=303]のようにリダイレクトコードも付加できる。

参考:http://japache.infoscience.co.jp/japanese_1_3_6/manual/mod/mod_rewrite.html

 

 

■301リダイレクトと302リダイレクトの違いは?
・301リダイレクト →キャッシュする
・302リダイレクト →キャッシュしない

 

 

 

\ まとめ /

まだまだ「?」が多すぎました。