コード
PC版とスマートフォン版サイトを.htaccessファイルで自動振り分けする方法[edit]
2017/09/20 【コード】
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC]
RewriteCond %{QUERY_STRING} !mode=pc
RewriteRule ^$ /sp/ [R,L]
</IfModule>
PHPでRSSの表示[edit]
2017/08/22 【コード】
<?php
$rss = "http://domain.jp/rss.xml";
$data = "";
$cp = curl_init();
curl_setopt($cp, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cp, CURLOPT_URL, $rss);
curl_setopt($cp, CURLOPT_TIMEOUT, 60);
$data = curl_exec($cp);
curl_close($cp);
$rss = simplexml_load_string($data);
//var_dump($xml);
echo '<ul>';
foreach($rss->channel->item as $item){
$title = $item->title;
$date = date("Y年 n月 j日", strtotime($item->pubDate));
$link = $item->link;
$description = mb_strimwidth (strip_tags($item->description), 0 , 110, "…Read More", "utf-8");
?>
<li><a href="<?php echo $link; ?>" target="_blank">
<span class="date"><?php echo $date; ?></span>
<span class="title"><?php echo $title; ?></span>
<span class="text"><?php echo $description; ?></span>
</a></li>
<?php } echo '</ul>'; ?>
Basic認証の設定[edit]
2017/08/07 【コード】
「.htaccess」に以下のように記載する
SSLRequireSSL
AuthUserFile /home/touch.co.jp/.htpasswd
AuthGroupFile /dev/null
AuthName "Enter password"
AuthType Basic
<Limit GET POST>
require user touch
</Limit>
<Files .ht*> # このファイルとパスワードファイルを見られないために
Order deny,allow
deny from all
</Files>
タグ >> apache
フォームメールの迷惑メール対策[edit]
2016/11/21 【コード】
「touch.co.jp」のDNSのSPFレコード
v=spf1 include:spf.protection.outlook.com +ip4:210.149.187.109 -all
v=spf1 include:spf.protection.outlook.com +a:touch.co.jp -all
<参考URL>
http://salt.iajapan.org/wpmu/anti_spam/admin/operation/information/spf_i01/#20
http://monaski.hatenablog.com/entry/2016/02/27/150530
タグ >> DNS
allow_url_fopen =offのサーバーでfile_get_contents()を動作させる方法[edit]
2016/06/22 【コード】
<?php
$url = "http://www.example.com/";
$data = "";
$cp = curl_init();
curl_setopt($cp, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cp, CURLOPT_URL, $url);
curl_setopt($cp, CURLOPT_TIMEOUT, 60);
$data = curl_exec($cp);
curl_close($cp);
echo $data;
?>
PHP + PDO + MySQL のトランザクション制御方法[edit]
2016/06/16 【コード】
<?php
require_once("function.php");
try{
$dbh = new PDO(DSN, USERNAME, PASSWORD);
// 静的プレースホルダを指定
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
// エラー発生時に例外を投げる
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//パラメータ
$id = 1;
//トランザクション処理を開始
$dbh->beginTransaction();
try {
//プリペアドステートメント / ロック
$stmt1 = $dbh->prepare("SELECT * FROM USERS WHERE ID = ? FOR UPDATE");
$stmt1->bindParam(1, $id, PDO::PARAM_INT);
$stmt1->execute();
//プリペアドステートメント
$stmt = $dbh->prepare("UPDATE USERS SET COUNT = COUNT + 1 WHERE ID = ?");
$stmt->bindParam(1, $id, PDO::PARAM_INT);
$stmt->execute();
//コミット
$dbh->commit();
}catch(PDOException $e){
//ロールバック
$dbh->rollback();
throw $e;
}
} catch(PDOException $e){
echo $e->getMessage();
}
?>
HTML5の基本的な構造[edit]
2016/03/08 【コード】
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>テストサイト</title>
<meta name="description" content="テストサイト" />
<meta name="keywords" content="テスト,サイト" />
<link rel="stylesheet" type="text/css" href="./index.css" />
</head>
<body>
</body>
</html>
.htaccess www あり www なし 統一方法[edit]
2016/03/02 【コード】
<wwwありで統一する場合>
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^yourdomain\.com
RewriteRule (.*) http://www.yourdomain.com/$1 [R=301,L]
<wwwなしで統一する場合>
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.yourdomain\.com
RewriteRule (.*) http://yourdomain.com/$1 [R=301,L]
メンテナンス中画面を出す正しいApacheの設定[edit]
2016/01/31 【コード】
結論としては、正しいやり方は次の2ステップになります。
メンテ中画面を出すWebサーバーに/maintenance.htmlというファイルを作り、人間に対して表示するメッセージをHTMLで書く。
.htaccess(またはhttpd.conf)で、次のどちらかのように設定する。
最低限バージョン************************
ErrorDocument 503 /maintenance.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteRule ^.*$ - [R=503,L]
</IfModule>
*******************************************
しっかりバージョン********************
ErrorDocument 503 /maintenance.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteCond %{REMOTE_ADDR} !=192.168.0.4
RewriteCond %{REMOTE_ADDR} !=192.168.0.5
RewriteRule ^.*$ - [R=503,L]
</IfModule>
<IfModule mod_headers.c>
Header set Retry-After "Sun, 14 Jun 2009 6:00:00 GMT"
</IfModule>
*****************************************
/maintenance.htmlの部分には、メンテ中であることを示すHTMLのパスを指定します。
192.168.0.4や192.168.0.5の部分には、管理者のIPアドレスを書きます。管理者IPアドレスがさらにある場合は行をコピーして増やせばOKですし、わからない場合は必要ない場合は行を削除してしまいましょう。
Sun, 14 Jun 2009 06:00:00 GMTの部分には、メンテ終了予定時刻を指定します(メンテ終了までの秒数でも出せますが、終了時刻をRFC1123形式で示すほうが楽でしょう、GMTにする必要がありますが)。ただし、ここに指定する値は人間のユーザーには基本的に示されませんし、あくまでも参考データです。
これで、どのURLにアクセスしても、ブラウザに表示されるURLはそのままで、メンテ中を示すページが表示され、しかも、HTTPレスポンスコード503(過負荷/メンテで一時的に利用不可)が返るので、検索エンジンに対しても一時的なメンテだと理解され、メンテ画面がインデックスされることはありません。
また、管理者が使っている一部のIPアドレスからのアクセスに対してはメンテ中を表示せず通常の処理/表示をします。メンテということは必ず状態をチェックするはずですから、自分たちはいつもの状態で確認できる仕組みが必要になるわけですね。

