http と https の領域を、.htaccess の設定で行ったり来たりさせる (2)
前回のメモの続きです。
http ←→ https (SSL) の行ったり来たりを .htaccess のリダイレクトの設定だけでなんとかする方法、http と https の領域が同じパターン編。
前提
- http と https とで、ファイルを置く領域が同一のとき
- /secure と /contact フォルダは https でアクセスさせたい
- /common フォルダはどちらからでもアクセスできるようにしたい
- その他は http でアクセスさせたい
.htaccess 例
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/secure/
RewriteCond %{REQUEST_URI} !^/contact/
RewriteCond %{REQUEST_URI} !^/common/
# CakePHP向け ここから
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} !^/debug_kit/
# CakePHP向け ここまで
RewriteRule ^.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/secure/ [OR]
RewriteCond %{REQUEST_URI} ^/contact/
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
これで、
- 通常のページはhttpsでアクセスしようとしてもhttpにリダイレクトされる
- /secure/ と /contact/ は http でアクセスしようとしても https にリダイレクトされる
- /common/ は http からでも https からでもリダイレクトされない
という設定になります。
http と https の領域を、.htaccess の設定で行ったり来たりさせる (1)
メモです。
フォームなどは SSL でアクセスさせたい、通常のページはhttpで、でも共通で使う画像などもありますよ、というとき、.htaccess のリダイレクトの設定だけでなんとかする方法。
前提
- http と https では、ファイルを置く領域が異なるとき
- /secure と /contact フォルダは https でアクセスさせたい
- /common フォルダはどちらからでもアクセスできるようにしたい
- その他は http でアクセスさせたい
http 側の .htaccess 例
RewriteCond %{REQUEST_URI} ^/secure/ [OR]
RewriteCond %{REQUEST_URI} ^/contact/
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
https 側の .htaccess 例
RewriteCond %{REQUEST_URI} !^/secure/
RewriteCond %{REQUEST_URI} !^/contact/
RewriteCond %{REQUEST_URI} !^/common/
# CakePHP向け ここから
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} !^/debug_kit/
# CakePHP向け ここまで
RewriteRule ^.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
これで、
- 通常のページはhttpsでアクセスしようとしてもhttpにリダイレクトされる
- /secure/ と /contact/ は http でアクセスしようとしても https にリダイレクトされる
- /common/ は http からでも https からでもリダイレクトされない
という設定になります。
CakePHP + PHPUnit でのテストで、例外を判定
CakePHP のコントローラでのテストで、たとえば 404エラーが発生することを確認するためのテストコードの例です。
<?php
App::uses('PostsController', 'Controller');
class PostsControllerTest extends ControllerTestCase
{
public $fixtures = array(
'app.posts',
);
public function test存在しないIDはNotFound()
{
// 404 Not Found が発生することを期待
$this->setExpectedException('NotFoundException');
// コントローラにアクセス
$this->testAction("/posts/detail/99999999");
}
}
PHPUnit の $this->setExpectedException() を使います。
Tumblr のテーマに、投稿者名とアイコンを表示する
Tumblr は複数人で1つのブログを更新していけるんですが、デフォルトのテーマだと投稿者名が表示されないので誰が更新したのかわかりません。 というわけで、投稿者名を表示できるようにテーマをいじったメモ。
http://www.tumblr.com/docs/ja/localizing_themes
ここにテンプレートタグはおおよそ掲載されていますが、投稿者名だけを表示したい場合は {PostAuthorName}
でいいみたいです。
投稿者のアイコンを表示したい場合は、このページには載っていないのですが {PostAuthorPortraitURL-24}
でいけました。
ということで、こんな感じのコードをテンプレートに追加。
<p class="author">by {PostAuthorName} <img src="{PostAuthorPortraitURL-24}" /></p>
以上メモでした。