HTML,CSS,PHP,ワードプレスカスタマイズ 技術情報資料

http を https にする .htaccess の話

スポンサーリンク

http を https にする .htaccess の話 ですけど、htaccess のリダイレクトを使って 非ssl を ssl にする。

のだけど。

横文字サイトに飛ぶようになることがあります。

これは、リダイレクト先がわけわかめのときに吹っ飛ぶ既定のサイトです。


htaccess のリダイレクトの書き方


ワードプレスの吐き出す .htaccess を参考に。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress


mod_rewite が使えるか確認のための1行目


IfModule mod_rewrite.c は、IF文です。
つまり、mod_rewite を使える場合、IfModule までを処理しなさいってことです。

つーことは? IfModule ってのは、モジュールが使えるかどうかを判断するときに使える .htaccess のコマンド。


RewriteEngine On 2行目


RewriteEngine は、リダイレクトエンジンだな。これを起動してくれって指示です。


RewiteBase 3行目


リライト処理後のパスを指定するコマンドです。
とりあえず、ルートである / にしておけばいい。


RewriteRule 4行目


リダイレクトをさせるコマンドで、その後ろが条件。

つまり、前方一致で index.php ならば、 - なにもするな。ってことね。

ここで一つのリダイレクト処理が終わります。なぜなら [L] ってフラグが付いているから。

リダイレクトのフラグの種類


フラグの書式は、[フラグ{,フラグ,{フラグ}}」の形で カンマで区切ることによって複数指定できます。

フラグ 意味 説明
C Chain このルールにマッチしたら、次のルールを評価
F Forbidden アクセス禁止(403-Forbidden)。リダイレクト処理はここまで。
G Gone 削除(410-Gone)
L Last リダイレクト処理はここまで。
NC No Case 大文字小文字を区別しない
NE No Escape ., “?”, “%”などの特殊文字をエンコードしない。
OR Or RewriteCond(条件)の OR 結合(無指定の場合 AND 結合になる)
PT Path Through Rewriteを終了
R Redirect 指定したURLにリダイレクト。[R=nnn]でダイレクトコードの付加ができる。リダイレクト処理はここまで


RewriteCond 6行目7行目


RewriteCondが、条件の設定になります。
6行目は、
RewriteCond %{REQUEST_FILENAME} !-f
環境変数 REQUEST_FILENAME がファイルでなければ。。。

つまり http://ドメイン/ ではなくてお尻に ファイル名の指定がなければということになります。
http://ドメイン/postname.html は、該当しない。

逆にファイルなら
RewriteCond %{REQUEST_FILENAME} -f
となります。!は、NOTの意味ですわ。

-d は、ディレクトリならという意味で http://ドメイン/フォルダー名/ が該当します。
で !-d なのでディレクトリでなければ。ということになります。

つまり、!-f と !-d で リクエストされた部分がファイルでも、ディレクトリでもなければ、以降を処理する。
という状態は。

http://ドメイン/ の状態の場合ということになります。


RewriteRule . /index.php [L] 8行目


リダイレクトのルールで . は、なんでもかんでも リダイレクト先 ./index.php に飛べ [L] ここまででリダイレクトおしまい。という意味になります。


つまり、環境条件(mod_rewrite を使えるか確認して、rewriteエンジンを Onにして、条件を付けてリダイレクトさせています。


htaccess で使う環境変数


応用を利かすには、環境変数を知りたくなりますよね?
環境変数は、%{環境変数名} で使います。

ここでは主旨違うのでひとつひとつ解説しませんが、
htaccess 環境変数一覧とかで検索すると見つかります。

とりあえず、
REQUEST_FILENAME:呼び出された時(リクエスト)の ファイル/ディレクトリ名 (通常は絶対パスで入ってきます)
HTTPS:SSL通信 SSL通信、つまり https で呼ばれたかどうか。
 使い方は、
 RewriteCond %{HTTPS} off
 https がOFFの状態なら。。。つまり http://ドメイン~で呼ばれているのならということになります。
 逆に On ならば、 https:// で呼ばれたことになります。
HTTP_HOST:呼び出されたドメインが入っています。
 RewriteCond %{HTTP_HOST} ^hogehoge.xyz$
 前方一致で hogehoge.xyz を呼び出しているならば。という条件になります。
 これは、www. の有り無しを処理するときに便利です。
 RewriteCond %{HTTP_HOST} ^www.$
 とかね。


リダイレクトのデバッグ


 条件一致のチェック、デバッグって普通のプログラムでも思い込みが出てしまいます。
 で、リダイレクトのデバッガー・・・ないから(汗

 でも
リダイレクトの経路を調べる(クローム)⇒https://nelog.jp/redirect-path
リダイレクトを止める(ファイヤーフォックス)⇒https://addons.mozilla.org/Ja/firefox/search/?q=NoRedirect&cat=1%2C0&appver=54.0&platform=windows

 これでデバッグできたかといえば、NOですが・・・とりあえず、いろいろな可能性を排除することができました。



スポンサーリンク

関連記事

スポンサーリンク

よく使うタグ

・float クリア
<br clear="all"><div style="clear:both;" class="clearfix"></div>
・角丸め
round-radius
border-radius:5px; -webkit-border-radius:10px; -moz-border-radius:10px;
・div box
overflow:scroll;min-width:300px;max-width:300px;min-height:300px;max-height:300px;
・TEXTAREAリサイズ
resize: vertical;
・サイトURL
home_url() // http://…
if(site_url()==home_url){
$shorturl_yuzu_path = substr(ABSPATH,0,strpos( ABSPATH, substr(site_url(),strlen(home_url()) ) ) ).’/’;
}else{
$shorturl_yuzu_path = ABSPATH.’/’;
}
// /var/…
・WP HOME URL
site_url() // http://…/wp
ABSPATH // /var/…/wp
・プラグイン(自分のDIR追加必要)
plugins_url() // http://…/plugins
WP_PLUGIN_URL // http://…/plugins
WP_PLUGIN_DIR // /var/…/plugins
・使用中のテーマ
get_template_directory_uri() // http://…/theme/xx
get_template_directory() // /var/…/theme/xx
・wp-content
content_url() // http://…/wp-content
WP_CONTENT_DIR // /var/…/wp-content
・画像URLからDIR変換
$pctdir=str_replace(content_url(), WP_CONTENT_DIR,$pcturl);
・パス名分解
$pathData = pathinfo($file);
echo $pathData["dirname"]; // /var/~
echo $pathData["filename"]; // xxx
echo $pathData["extension"]; // txt
echo $pathData["basename"]; // xxx.txt
・画像サイズ
list($width,$height) = getimagesize($url);
if(has_post_thumbnail()){
$thumbnail_id = get_post_thumbnail_id();
$thumbnail_img = wp_get_attachment_image_src( $thumbnail_id , ‘full’ );
$src = $image[0]; //url
$width = $image[1]; //横幅
$height = $image[2]; //高さ
・画像サイズ比率
list($src_w,$src_h) = getimagesize($file);
$dst_w = 600;$dst_h = 0;
$dst_h = ($dst_w!=0)?(intval(($src_h*$dst_w)/$src_w )):(($dst_h!=0)?(intval(($src_w*$dst_h)/$src_h)):0);
・疑似要素順
link visited hover active


特殊文字
シングルクォート : &#39;
ダブルクォート : &quot;
WP設定内表示前処理(htmlタグ許可項目)
$str = str_replace(‘<','&lt;' ,$str);
$str = str_replace(‘>’,’&gt;’ ,$str);
$str = str_replace(‘\”‘,’&quot;’,$str);
$str = str_replace(“\'”,’&#39;’ ,$str);
WO設定項目表示前処理(htmlタグ許可項目)
$str = str_replace(‘\”‘,'”‘,$str);
$str = str_replace(“\'”,”‘”,$str);
・テーマ
get_theme_root_uri()
get_theme_root()
・WP 情報
get_bloginfo( $show )
・Wp config FTP 情報 設置
define( ‘FTP_HOST’, ‘host’ );
define( ‘FTP_USER’, ‘id’ );
define( ‘FTP_PASS’, ‘pw’ );
define( ‘FTP_SSL’, false );
弾に使う
placeholder:ユーザー入力補助

カテゴリー

FB 広告 最適化~グーグルアナリティクスとサーチコンソールの連動のさせかた(必要な分だけ)

FB 広告 最適化~グーグルアナリティクスとサーチコンソールの連動のさせかた(必要な分だけ) FB 広告 最適化にあたって必要になってくるツールがグーグルアナリティクスとサーチコンソール。別にグーグルのアナリティクス、サーチコンソールでなくてもアクセス解析はできるんだけど、グーグルはユーザー囲

FB 広告 最適化~グーグルアナリティクスの使い方(必要な分だけ)

FB 広告 最適化~グーグルアナリティクスの使い方(必要な分だけ) FB 広告 最適化にあたって必要になってくるツールがグーグルアナリティクス。別にグーグルのアナリティクスでなくてもアクセス解析はできるんだけど、グーグルはユーザー囲い込みの為他のアクセス解析では見せな

FB 広告 最適化~グーグルサーチコンソールの使い方(必要な分だけ)

FB 広告 最適化~グーグルサーチコンソールの使い方(必要な分だけ) FB 広告 最適化にあたって必要になってくるツールがグーグルサーチコンソール。別にグーグルのサーチコンソールでなくてもいいんだけど、グーグルはユーザー囲い込みの為他のアクセス解析では見せなくしたキーワ

FB 広告 最適化~グーグルのアクセス解析の基本

FB 広告 最適化~グーグルのアクセス解析の基本 FB広告を最適化するためには、アクセス解析が重要なカギを握ります。FB広告から当該ページに飛んでくるときURLにオプションを付けることができます。このURLにつけたオプションを使ってどの広告から、どん

jQuery ボタンを押しても反応しない

jQuery ボタンを押しても反応しない jQuery の click イベントを使ってボタンを押したら alert を表示する簡単な仕様なのになにも反応しない。一瞬はまってしまうことって・・・ありますよね?例えば、こう書きます。popup.

WP パーマリンク リダイレクト インターナルサーバーエラー

WP パーマリンク リダイレクト インターナルサーバーエラー WP パーマリンクのリダイレクトがインターナルサーバーエラーを起こすようになった。ユーザーさんのサイトなので「なにをしたか」わからない。WP パーマリンク リダイレクト インターナルサーバーエラーのい