�ȥå� > Appli > Amazon�β���URL������Rewrite

Amazon���URL������Rewrite

����

Amazon ��ɸ��ξ��ʥ�󥯤ϡֹ����ץܥ���ȥץ饤�Х�����󥯤����礤�Ȥ���ޤʤΤǡ���ʬ�Ǻ�ꤿ���ʤ롣 ���ΤȤ���ɬ�פˤʤäƤ���Τ����ʲ����ʤ櫓����������μ����������ǤϤ����ʤ���

�����ASIN���Ѥ��� URL �Ǽ����Ǥ����褦���������ϲ����� URL �ξ��ʼ��̻Ҥ������� "15ndv8ndf9a" �Τ褦�� ASIN ����ñ��˵����ʤ��ʤäƤ��롣

http://ecx.images-amazon.com/images/I/15ndv8ndf9a._SS160_.jpg

��äơ���ˡ�Ȥ��Ƥ� Product Advertising API �Ȥ�����󥯺����Ѥ�API��Ȥ������ʤ���

���Ȥ��Ƥ�

  1. Product Advertising API ��������������������
  2. ��������������Ȥä����������ѤΥ�����ץȤ��
  3. URL Rewrite�ǥ�����ץȤ����Ф� �Ȥʤ롣

����ϥ�����ץȤ� PHP ���Ѥ������ޤ��������С��� Apache �Ǥ���Τ� URL Rewrite �����Ū��ñ�����ѤǤ��롣IIS �ʤɤ���Ѥ��Ƥ����������Ĵ�٤Ƥ�������������

Product Advertising API ��������������������

Amazon �����������ȤΥȥåץڡ������� "Product Advertising API" �����֤� "��������Ⱥ���" �ܥ��󤬤���Τǡ�����򥯥�å�������������Ȥ�������롣

�ʤ���Amazon.co.jp �Υ�������ȤǤϤʤ���AWS (Amazon Web Services) �Υ�������ȤʤΤǡ���äƤ��ʤ�������Ͽ��ɬ�פǤ��롣��Ͽ�ϱѸ�����������Ȥγ��������ʤɤ�Ŭ���˽񤤤Ƥ����Ф�����

��Ͽ����λ����� "�������������"��"����������������" ���饢��������������ǧ�Ǥ��롣Access Key ID �� Secret Access Key ��ɬ�פʤΤǡ����äƤ�����

��������������Ȥä����������ѤΥ�����ץȤ��

����� Amazon Product Advertising API �ؤ��б���PHP�ǡ� - ��䤷���� �ʤɤ����ͤˤʤ롣 4���ܤ���50���ܤ�����ޤǤϤۤܤ��Τޤ޻Ȥ碌�Ƥ��������Ƥ��롣

5����6���ܤ� <Access Key ID> �� <Secret Access Key> �򤽤줾��񤭴�����Ф褤��

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
$asin = isset($_GET["asin"]) ? $_GET["asin"] : "B003H7MVD2";
$option = isset($_GET["op"]) ? $_GET["op"] : "_SS160_";
 
// Access Key ID �� Secret Access Key ��ɬ�ܤǤ�
$access_key_id = '<Access Key ID>';
$secret_access_key = '<Secret Access Key>';
$xmlns = 'http://webservices.amazon.com/AWSECommerceService/2009-03-31';
 
// RFC3986 ������ URL ���󥳡��ɤ���ؿ�
function urlencode_rfc3986($str)
{
  return str_replace('%7E', '~', rawurlencode($str));
}
 
// ����Ū�ʥꥯ�����Ȥ�������ޤ�
// - ������ʬ�Ϻ��ޤ��̤�
$baseurl = 'http://ecs.amazonaws.jp/onca/xml';
$params = array();
$params['Service'] = 'AWSECommerceService';
$params['AWSAccessKeyId'] = $access_key_id;
$params['Version'] = '2009-03-31';
$params['Operation'] = 'ItemLookup';
$params['ResponseGroup'] = 'Images';
$params['ItemId'] = $asin;
 
// Timestamp �ѥ�᡼�����ɲä��ޤ�
// - ���֤�ɽ���� ISO8601 �����������ॾ����� UTC(GMT)
$params['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z');
 
// �ѥ�᡼���ν���򾺽���¤��ؤ��ޤ�
ksort($params);
 
// canonical string ��������ޤ�
$canonical_string = '';
foreach ($params as $k => $v) {
  $canonical_string .= '&'.urlencode_rfc3986($k).'='.urlencode_rfc3986($v);
}
$canonical_string = substr($canonical_string, 1);
 
// ��̾��������ޤ�
// - �����ʸ����ե����ޥåȤ����
// - HMAC-SHA256 ��׻�
// - BASE64 ���󥳡���
$parsed_url = parse_url($baseurl);
$string_to_sign = "GET\n{$parsed_url['host']}\n{$parsed_url['path']}\n{$canonical_string}";
$signature = base64_encode(hash_hmac('sha256', $string_to_sign, $secret_access_key, true));
 
// URL ��������ޤ�
// - �ꥯ�����Ȥ������˽�̾���ɲ�
$request_url = $baseurl.'?'.$canonical_string.'&Signature='.urlencode_rfc3986($signature);
 
// �ꥯ�����Ȥ��� XML �����
$strXml = file_get_contents($request_url);
if (!$strXml)
{
  echo 'Failed. Request URL = '.$request_url;
  exit;
}
// URL �򸫤Ĥ���
if (preg_match("|s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+_.jpg|", $strXml, $matches))
{
  //���ץ�����񤭴�����
  $url = preg_replace("|_[a-z0-9]+_|i", $option, $matches[0]);
}
 
if (strlen($url) > 0)
{
  // URL �������Ǥ��Ƥ���Х�����쥯��
  header("Location: ".$url);
}
else
{
  // ���Ԥ������� XML �򤽤Τޤ޽񤭽Ф��ʥǥХå��ѡ�
  echo $strXml;
} 

�ʸ塢���Υ������� /cgi/amazon_image.php ����¸������ΤȤ��롣

1��2 ���ܤϥ�����ץȤ��Ϥ��ѥ�᡼���Ǥ��롣

asin���ʤ�ASIN
op�������ץ����

�������ץ����� Amazon�ξ��ʲ����򥫥����ޥ������Ƥߤ�ʤ���1�� - ����꡼�ޥ���� �ʤɤ򻲹ͤˤ��롣_�ʥ�������������ˤǤϤ��ޤ줿ʸ����Ǥ��롣

�������ѹ��ϤΥ��ץ����ϲ������̤ꡣ

����
��xxx ��500�ʲ��ο�����
��ǽ��
_SLxxx_��ư�ꥵ����
�������⤵��xxx�˹�碌�롣����¾���դ�����Ū�˷��ꤵ����
_SL160_
_SXxxx_������ꥵ����
������xxx�˹�碌�롣�⤵������Ū�˷��ꤵ����
_SX100_
_SYxxx_�⤵����ꥵ����
�ʹ⤵��xxx�˹�碌�롣��������Ū�˷��ꤵ����
_SY200_
_SSxxx or AAxxx_�������ꥵ����
�������⤵�Ȥ��xxx�˹�碌�롣­��ʤ��������ˤ�;���ɲä�����
_SS160_

���Τ��ᡢ���Ȥ��� ASIN=B000000000 �ξ��ʤ������� 150px �Ǽ��Ф���������

/cgi/amazon_image.php?asin=B000000000&op=_SS150_

�Ȥ���Ф褤��

ǰ�Τ��ᡢ52 ���ܰʲ����ɲä��������ɤ��������ñ�ˤ��Ƥ�����

  1. 53: �������� URL �� AWS �˥ꥯ�����Ȥ���$strXml �˥쥹�ݥ󥹤����롣
  2. 54��58: $strXml �����ʼ��ԡˤʤ� URL ��񤭽Ф��ƽ�λ��
  3. 60��64: ��http:// ����Ϥ��ޤä� _.jpg �ǽ����ʥ��ץ����Ĥ��Ρ�URL�פ�õ�������ץ������ʬ��ʬ�� option ���ִ����� $url ��������
  4. 66��: ���ޤ� URL �������Ǥ���Ф��� URL �� Location: �إå��������Ф����Ǥ��ʤ���Х쥹�ݥ󥹤� XML �����ơʥ��顼���Ƥ����Ҥ���Ƥ���ˤ��Ǥ��Ф���

URL Rewrite�ǥ�����ץȤ����Ф�

���Τޤޡ�img ������

<img src="/cgi/amazon_image.php?asin=B000000000&op=_SS150_"/>

�Ȥ��Ƥ���������Ϥʤ��Τ���������äȤ��ä��褯(?) .jpg ��ɽ���Ǥ���褦�ˤ��Ƥߤ롣

Apache �� URL Rewrite �����Ѥ��� .htaccess �˲����Τ褦���ɵ����롣

# Amazon ��������������ץ��� URL Rewrite
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
# with option
RewriteRule ^amazon_image/([A-Z0-9]+)(_[_a-zA-Z0-9]+_)\.jpg$ /cgi/amazon_image.php?asin=$1&op=$2 [L]
# without option
RewriteRule ^amazon_image/([A-Z0-9]+)\.jpg$ /cgi/amazon_image.php?asin=$1 [L]

���ץ����Ĥ��ȥ��ץ���󤢤�ξ��� RewriteRule ��񤤤Ƥ��롣�����

amazon_image/B000000000_SS150_.jpg
amazon_image/B000000000.jpg

�Ȥ����褦�� URL ���ꥯ�����Ȥ��줿�Ȥ������줾��

/cgi/amazon_image.php?asin=B000000000&op=_SS150_
/cgi/amazon_image.php?asin=B000000000

�Ƚ񤭴������ΤǤ��롣

����ˤ�� img �����ˤ�

<img src="amazon_image/B000000000_SS150_.jpg"/>

�ȵ��Ҥ��뤳�Ȥ��Ǥ��롣

����

  • 2010/6/5 ��ɮ
(2010/06/06 09:40:21)
15363
�ץ��ե�����

Kenz Yamada�ʻ��ĸ���ˡ�1984ǯ������塣����äȤ��Ĺ����ʥץ�������äƤޤ��� �����ʤ�Τϥ�����ι�ԡ��������åȤ�Ȥβ�ꡢ����äȤ������ޤ��� �ܤ����� Web mixi �ǡ�

Bookmark and Share