カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

さくらインターネット 常時SSL化の弊害

さくらインターネットで常時SSL化した際に起こる弊害について、
限られた条件下ではありますが、解決法を見つけたので書いておきたいと思います。

まずルートディレクトリになんらかのWEBサイト(WordPressでも何でも)を運用しているとします。
そして下層ディレクトリにWordPressをインストールし、オプションのサブドメインを使用している場合のお話です。

例)test.achoo.jpというサブドメインでルートディレクトリを/achoo/に設定

さくらインターネットのサーバーで共有SSLを利用する場合、SSLを設定できるのは
デフォルトのサブドメインのみです。
オプションのサブドメインで下層ディレクトリをルートディレクトリとしている場合には
対象外となります。

常時SSL化を有効化し、下層ディレクトリのWordPressのサブドメインにアクセスしてみると
SSLに対応していないのにSSLでアクセスさせられます。
設定のURLをhttpで設定していても、ちゃんと表示できるのはトップページだけでした。
サブページに関してはHTMLは問題なく読み込めているものの、内部のCSS等の読み込みのパスがSSL化されてしまって読み込めない状態になっていました。

色々調べても有用なものがなく、.htaccessも触ってみたりしましたがなかなか解決しませんでした。
最終的に行き着いたのが、wp-config.phpに無理矢理SSLではないと設定を記述することで解決しました。

解決方法はwp-config.phpに以下を追加します。

$_SERVER['HTTPS'] = 'off';
$_ENV['HTTPS'] = 'off';

17 views

findとgrepを使ってファイルの中身を一括検索と置換

ホームページを制作していて、基幹に関わるファイル名等を変更したとき、サーバーにあるファイルのどのファイルから読み込まれているかを全て把握した上で変更しないといけないですよね。

小規模なサイトであれば問題はありませんが、大規模なサイトになると難しいこともあるでしょう。

これはサーバーが直接操作できる、もしくはsshでログインできる場合に限られますが、便利な方法をご紹介します。

findとgrepのコマンドを組み合わせてファイル内に該当ファイル名が記述されているファイルを探します。
例として「example.js」というファイルが読み込まれているhtmlファイルを探します。

find / -name '*.html' -type f | xargs grep -l 'example.js'

findコマンドのほうは、第1引数に探すディレクトリ(この場合ルート)、-nameオプションでファイル名を絞り込んでいます。
-type fは通常のファイルを指定しています。※シンボリックリンク等含まれない

grepコマンドのほうですが、-lオプションが見つかったファイル名だけを列挙するオプションとなります。
何も指定しないと見つかった行の内容も出力されるので、-lオプションを指定するよりも遅いです。

パイプの後にxargsとあるのは、見つかったファイルの中身をgrepでチェックするためです。
これがないとファイル名をgrepしてしまいます。

ディレクトリは再帰的に探してくれるので、指定したディレクトリ以下の全てのファイルをチェックできます。

また、検索した文字列を一括で置換する場合には以下のようにします。

find / -name '*.html' -type f | xargs grep -l 'example.js' | xargs perl -p -i -e 's/example.js/exam.js/g'

perlコマンドのオプションについて
-pは入力データ各行毎に処理して出力します。
-iは入力ファイルを処理結果で上書きします。
-e、実行するスクリプトの内容を指定します。
ここでは「s/置換前/置換後/g」のスクリプトを使います。
gスイッチを付け加えることでマッチしたもの全てを置換してくれます。

50 views

iOS メールを一括で削除する

こちらの方法はiOS7の頃からあった方法のようですが、
現在のiOS11でも出来ます。
少しやり方が特殊で私自身も忘れるのでメモしておきます。

  1. 事前に[編集]-[すべてマーク]-[開封済みにする]で全てのメールを開封済みにします。
  2. 再度[編集]をタップします。
  3. 一番上のメールにチェックを入れます。
  4. 下の[移動]を押しながら、先ほどチェックしたメールのチェックを外します。
  5. [移動]から指を離します。
  6. 全てのメールが選択されたことになり、移動先を聞いてくるのでゴミ箱を選択します。

すると全てのメールを一括でゴミ箱に移すことができました。

26 views

JSONデータをCodableを使って構造化する

JSONデータを解析するためにJSONSerializerを使っていましたが、Swift4からもっと簡単にできるようになったのでやってみました。

CodableというプロトコルがSwift4から新たに追加されました。
これを利用すれば簡単に構造体に落とし込むことができます。

まずはデータを扱う構造体を宣言します。
Codableと付け加えましょう。

struct myData: Codable {
    
    let ID_C: Int
    let NAME_C: String
    let COMMENT_C: String? //nullを許容
    let DATE_C: String

}

次にWEB上からデータを取得するため、URLSessionを使用します。

let session = URLSession(configuration: URLSessionConfiguration.default)
let url = "http://www.example.jp/json.php" //JSONデータを取得するURL

単純に文字列で出力してみましょう。 続きを読む…»

65 views

VisualC#でSQLServerへの接続

VisualC#でSQLServerに接続し、データを取得するサンプルです。
割と簡単に取得できますので、是非やってみてください。

まずはSqlClientの参照が必要です。

using System.Data.SqlClient;

接続の設定をします。

private string GetConnectionString()
{
    var builder = new SqlConnectionStringBuilder()
    {
        DataSource = "サーバーのIPアドレス",
        InitialCatalog = "データベース名",
        IntegratedSecurity = false, //User ID および Password を接続文字列中に指定するか
        UserID = "ユーザーID",
        Password = "パスワード"
    };

    return builder.ToString();
}

続きを読む…»

82 views