前に書いた javascript のクロージャと ローカル変数 に関連するメモ。
というか、これを書くための前置きとして書いたものだったり。
2010年6月28日月曜日
2010年6月26日土曜日
短縮URLぽいことをしてみる
ヒマだし面白そうだから、短縮URLっぽいことをするスクリプト書いてみた。
準備するもの
いままでは /FooBar が存在しない場合は404 Not Foundだったのが
/REDIRECT_DATA/FooBar が存在するなら、404ではなく
リダイレクト用のCGIスクリプト(/redirect.cgi)が呼ばれるようになる。
/REDIRECT_DATA/FooBar が見つからなければ、今まで通り404 Not Found
http://www.hoge.com/abcd/1234/hoge.html に飛ばしたいなら
/REDIRECT_DATA/Foo/Bar というファイルを作成して
リダイレクト先が同じドメインなら、http://www.hoge.com は省略可
準備するもの
- .htaccessを置けて mod_rewrite が使えるサーバー
- CGIが利用可能&Rubyが使える
- ドメインかサブドメインでのホスティング
public_html 直下に置く .htaccess を作成
RewriteEngine Onこれで、http://www.hoge.com/FooBar にリクエストが来た場合
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/REDIRECT_DATA%{REQUEST_URI} -f
RewriteRule ^(.+)$ /redirect.cgi%{REQUEST_URI} [L]
いままでは /FooBar が存在しない場合は404 Not Foundだったのが
/REDIRECT_DATA/FooBar が存在するなら、404ではなく
リダイレクト用のCGIスクリプト(/redirect.cgi)が呼ばれるようになる。
/REDIRECT_DATA/FooBar が見つからなければ、今まで通り404 Not Found
リダイレクト用のCGIスクリプト redirect.cgi を設置
#!/usr/bin/rubyこれで準備OK
begin
file = "REDIRECT_DATA#{ENV['PATH_INFO']}"
raise File.dirname(file) unless %r{^REDIRECT_DATA/} =~ (File.dirname(file)+'/')
File.open(file) do |f|
location = f.gets.chomp
if %r{^/} =~ location
server_name = ENV['SERVER_NAME'] or raise
server_port = ENV['SERVER_PORT'].to_i or raise
if ENV.has_key?('HTTPS') and /off/i !~ ENV['HTTPS']
port = (server_port == 443) ? '' : ':' + server_port.to_s
location = "https://#{server_name}#{port}#{location}/"
else
port = (server_port == 80) ? '' : ':' + server_port.to_s
location = "http://#{server_name}#{port}#{location}/"
end
end
puts "Status: 302 Found"
puts "Content-Type: text/plain; charset=UTF-8"
puts "Location: #{location}"
puts ""
puts location
end
rescue
puts "Status: 500 Internal Server Error"
puts "Content-Type: text/plain; charset=UTF-8"
puts "Cache-Control: no-cache"
puts ""
puts "Internal Server Error"
end
短縮URLとリダイレクト先の設定
http://www.hoge.com/Foo/Bar へのアクセスをhttp://www.hoge.com/abcd/1234/hoge.html に飛ばしたいなら
/REDIRECT_DATA/Foo/Bar というファイルを作成して
http://www.hoge.com/abcd/1234/hoge.htmlリダイレクト先のURLを書いておけばOK。
リダイレクト先が同じドメインなら、http://www.hoge.com は省略可
/abcd/1234/hoge.html↑これでもOK
2010年6月25日金曜日
2010年6月24日木曜日
javascriptのクロージャとローカル変数
登録:
投稿 (Atom)