サイト内でURLを転送する(.htaccessの記述方法)

posted in: etc, web技術 | 0

一部混在していたURLの表記を統一したり、存在しないディレクトリへのアクセスからホームページに誘導するため、サイト内のURL転送を少し変更してみました。全て、.htaccessファイルへの記載です。

なお、何度も出てくる RewriteEngine on は、一度記載すれば以降は不要です。

httpからhttpsへ統一する

URL表記の先頭のhttpとhttpsはホームページのデータのやりとりのプロトコル(定義)をさしていて、httpは暗号化されていない、httpsは暗号化されていることを意味します。最近のブラウザは必ずと言ってもいいほどhttpsに対応していて、httpだと警告を発するブラウザも増えてきました。そこで当サイトも遅ればせながらhttpsに対応して、httpへのアクセスは全てhttpsへ転送するようにしました。

.htaccess 

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

wwwのあるなしをwwwありに統一する

普通にアクセスするにはどうでもいい事なんですが、enkai-ne.jpへのアクセスをwww.enkai-net.jpへ転送して統一するようにしました。

.htaccess 

RewriteEngine On
RewriteCond %{HTTP_HOST} ^enkai-net.jp$
RewriteRule ^(.*)$ https://www.enkai-net.jp/$1 [R=301,L]

ディレクトリを転送する

ディレクトリ名を/cgi-bin/から/jq3btu/に変更したため、古いディレクトリへアクセスがあった場合のエラー回避のためディレクトリごと転送しました。

.htaccess 

RewriteEngine On
RewriteRule ^cgi-bin(.*)$ /jq3btu/$1 [L,R=301]

index.htmlへのアクセスを転送する

ほとんどのWEBサイトのデフォルトホームページはindex.htmlなんですが、当ブログはindex.htmlへのアクセスはフレームでbloxsom.cgiへ転送していました。これを、URL転送に変更しました。

.htaccess 

RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ https://www.enkai-net.jp/jq3btu/blosxom [L,R=301]

存在しないファイル・ディレクトリへのアクセスを転送する

ほとんどのWEBサイトでは、

  • ディレクトリへのアクセスはそのディレクトリのindex.htmlへ転送
  • 存在しないファイルへのアクセスはエラー表示

となっており、当サイトもそのようにしていました。これを、ホームページへ転送するよう変更しました。※この設定によって、index.htmlファイルを消してしまったら上の設定は不要になります。

.htaccess 

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . https://www.enkai-net.jp/jq3btu/blosxom [L]

ディレクトリへのアクセス対策(おまけ)

ほとんどのレンタルサーバでは以上の設定でいいのですが、自前のサーバや一部のレンタルサーバでは、index.htmlやindex.cgi等を置いてないディレクトリ名へのアクセスはディレクトリ内のファイル構造を表示してしまい、直接そのディレクトリ内のファイルが読み取れてしまいます。実はWEBサーバの初期設定がそうなっているからです。逆に言えば対策されているレンタルサーバは親切に設定変更してくれているんです。この現象を回避するため、index.htmlやindex.cgi等を置いていないディレクトリ名へのアクセスを拒否します。

.htaccess 

Options -Indexes

URLから/cgi-bin/~.cgiを隠す

posted in: Blosxom, web技術 | 0

当ブログはblosxom.cgiを使わせて頂き構築しているのですが、そうするとホームページのURLが標準では~/cgi-bin/blosxom.cgiとなります。もちろんこれでも問題は無いわけですが、URLを紹介するときに長くなるしなんとなくスマートではない。っつーわけで、自室にこもる時間が長くなる時節柄、ちょっと時間を掛けて当ホームページから/cgi-bin/~.cgiを隠してみました。

.cgiを隠す

WEBサーバの/cgi-bin/.htaccessに下記構文を追記して、.cgiなしのリクエストを.cgiがあるものとして処理させます。(blosxomへのリクエストがblosxom.cgiへのリクエストとして処理され、結果URLから.cgiが見えなくなる)

/cgi-bin/.htaccess 

AddType application/x-httpd-cgi .cgi
MultiviewsMatch Handlers
Options +MultiViews

/cgi-bin/を隠す

単純に、/cgi-bin/を/jq3btu/にrenameしました。webソース内の色々な箇所に/cgi-bin/の記載があるため、全て書き換えて完成と思ったら、blosxomのページ切り替えのプラグインpaginateが拡張子なしに対応していないようで不具合を起こしてしまいました。カテゴリ分けした表示をしてる状態でページ切り替えをする時にpaginateリンク先URLが異常となって誤動作を起こすようで、paginateの改良。これはソースを解析するのちょっと時間が掛かりました。簡単な正規表現を追加しただけですが、正規表現が苦手な私はまたここでちょっと勉強・・・

paginate 

$prev_url = url(-path_info=>1,-query=>1);
$prev_url =~ s|$blosxom::url||;			# 追加 拡張子なしのアクセスでの不具合対応
$prev_link = fill_template('paginate_prev_link');
 :
$curr_url = url(-path_info=>1,-query=>1);
$curr_url =~ s|$blosxom::url||;			# 追加 拡張子なしのアクセスでの不具合対応
 :
$next_url = url(-path_info=>1,-query=>1);
$next_url =~ s|$blosxom::url||;			# 追加 拡張子なしのアクセスでの不具合対応
$next_link = fill_template('paginate_next_link');

まとめ記事にもシェアボタン追加

posted in: web技術, YukiWiki | 0

ブログに「シェア」ボタンをつけたら、今度はまとめ記事にも同じように「シェア」ボタンをつけたくなって、勢いで追加しました。

YukiWikiにおいては、下記コードを追記します。

私はコメント欄の直後に「シェア」ボタンが入るよう、wiki.cgiの1230行あたり、sub embedded_to_htmlの form action=”$url_cgi” method=”post”…/formの直後に追記しました。私にとってはコメント欄の有無に連動するのが都合が良かったのですが、全てのページに入れたい方はwiki.cgiの480行あたり、sub print_footerの/divの直前あたりがいいかも知れませんね。

wiki.cgi

<!--Facebook Shere-->
	<iframe src="https://www.facebook.com/plugins/share_button.php?href=$modifier_rss_link?$form{mypage}&layout=button&size=small&width=69&height=20&appId" width="69" height="20" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe>
<!--Line Shere-->
	<div class="line-it-button" data-lang="ja" data-type="like" data-url="$modifier_rss_link?$form{mypage}" data-share="true" style="display: none;"></div>
<script src="https://d.line-scdn.net/r/web/social-plugin/js/thirdparty/loader.min.js" async="async" defer="defer"></script>
<!--Twitter Shere-->
	<a href="https://twitter.com/share?ref_src=twsrc%5Etfw" class="twitter-share-button" data-url="$modifier_rss_link?$form{mypage}" data-lang="ja" data-show-count="false">Tweet</a><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ブログにシェアボタン追加

posted in: Blosxom, web技術 | 0

ウェブサーフィンをしているとよく見かける「いいね」「シェア」のボタン。私も欲しくなってブログにつけてみました。公式サイトに詳しい方法が書かれているので簡単です。自分のサイトに下記コードを追記します。

[$url$path/$fn.html]の部分は設置したページ自身のアドレスでシェア先のアドレスですので、適宜変更下さい。

blosxomにおいてはstory.htmlの$bodyの下あたりに追記します。特に変更は不要だと思いますが、細かい設定変更については公式サイトを御参照下さい。

公式サイトはコチラ→ FacebookLineTwitter

story.html

<!--Facebook Shere-->
	<iframe src="https://www.facebook.com/plugins/share_button.php?href=$url$path/$fn.html&layout=button&size=small&width=69&height=20&appId" width="69" height="20" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe>
<!--Line Shere-->
	<div class="line-it-button" data-lang="ja" data-type="like" data-url="$url$path/$fn.html" data-share="true" style="display: none;"></div>
<script src="https://d.line-scdn.net/r/web/social-plugin/js/thirdparty/loader.min.js" async="async" defer="defer"></script>
<!--Twitter Shere-->
	<a href="https://twitter.com/share?ref_src=twsrc%5Etfw" class="twitter-share-button" data-url="$url$path/$fn.html" data-lang="ja" data-show-count="false">Tweet</a><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

コメント欄復活

posted in: web技術, YukiWiki | 0

久々にまとめ記事を書くに当たって、やっぱりコメント欄はある方がいいのかな….ってことで、ブログとまとめ記事の両方にコメント欄を付けてみました。

元々あった機能を閉鎖していただけなので簡単簡単…っと思いきや、しばらく放置しているあいだにサーバ側で変更があったようでうまく動作せず、CGIを色々修正する羽目になりました。

コメントに限らずですが、古いフリーのCGIを改良しながら使ってるので、ちょっとやりたいことがあると全て自分でCGIを修正する必要があります。プラグインを自作したりなんやかんや、記事を書く時間よりCGIのプログラミングの時間の方が長くなっちゃって本末転倒な状態です。ってもまぁ、誰も読んでない(であろう)WEBページですから、それも趣味の範囲。楽しみながら進めております。

QSLカード区分棚

posted in: アマチュア無線, 自作 | 0

アマチュア無線で交信した時に交換する交信証(交信証明書)=QSLカードを順番に並べて整理するための棚「区分棚」を作りました。棚板は取り外し可能にして柔軟に対応出来るようにまし、また奥を少し下げて一度入れたカードが飛び出しにくい構造にしてみました。 (作成記事はコチラ)