<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wordpress &#8211; 開発記録</title>
	<atom:link href="https://www.kthksgy.com/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kthksgy.com</link>
	<description>開発メモです。現在レイアウトが一部崩れている箇所があります。</description>
	<lastBuildDate>Wed, 11 Nov 2020 04:35:19 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2.2</generator>
	<item>
		<title>HTTP/www無しのURLを自動的にHTTPS/www有りのURLに転送する【.htaccess/WordPress】</title>
		<link>https://www.kthksgy.com/web/redirect-https-www/</link>
					<comments>https://www.kthksgy.com/web/redirect-https-www/#respond</comments>
		
		<dc:creator><![CDATA[kthksgy]]></dc:creator>
		<pubDate>Sun, 26 Apr 2020 00:39:35 +0000</pubDate>
				<category><![CDATA[Webサイト]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://www.kthksgy.com/?p=8</guid>

					<description><![CDATA[様々なURLでアクセスされた場合に、それを1つのURLにまとめるURL正規化の話です。 昨今のインターネットでは、SSLに対応していないWebページにアクセスするとブラウザから警告が出るようになっています。なので、Web&#8230;]]></description>
										<content:encoded><![CDATA[<p>様々なURLでアクセスされた場合に、それを1つのURLにまとめるURL正規化の話です。<br />
<span id="more-8"></span></p>
<p>昨今のインターネットでは、SSLに対応していないWebページにアクセスするとブラウザから警告が出るようになっています。なので、Webページを公開する時は必ずSSLに対応するというのは最早常識の域になりつつあります。</p>
<p>しかし、SSLに対応しただけでユーザーがSSLと非SSLのどちらを選ぶかはまた別の話です。URLの先頭が<code>https://</code>か<code>http://</code>かでSSLと非SSLが振り分けられるようになっていますが、人によっては<code>s</code>を忘れてしまったりする事もあるかもしれませんし、その場合は普通にセキュリティの警告が出ます。</p>
<p>警告が出ないようにそもそも<code>http://</code>で公開しないという手もありますが、それだと上のようなケースではWebサイトが存在しない物として扱われてしまいます。</p>
<p>なので、<code>http://</code>を公開しながらアクセスの全てを<code>https://</code>にリダイレクトするのが良いと思います。</p>
<p>ついでに、SEO対策として<code>www</code>の有無でページの評価が分散しないように、<code>www</code>の有無も統一します。</p>
<p>Webページを公開した最初しかやらなくて毎度忘れているので、自分用のメモとして残しておきます。</p>
<h2><code>.htaccess</code>ファイルを作る</h2>
<p>Webサイトのドキュメントルートに<code>.htaccess</code>を作成します。Wordpress等だと既に作ってあります。</p>
<p>これの先頭に、以下の内容を記述します。</p>
<pre><code class="language-htaccess line-numbers">&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
&lt;/IfModule&gt;
</code></pre>
<p>これでOKです。<code>http://</code>且つ<code>www</code>無しのURLへのアクセスが、<code>https://</code>且つ<code>www</code>有りのURLに転送されます。</p>
<h2>解説</h2>
<p><code>.htaccess</code>に記述した内容を解説します。</p>
<p>URLの書き換えを行うモジュールを利用できる場合に、URL書き換えを有効化して<code>&lt;IfModule mod_rewrite.c&gt;</code>から<code>&lt;/IfModule&gt;</code>までの間の処理を実行します。</p>
<pre><code class="line-numbers">&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
...
&lt;/IfModule&gt;
</code></pre>
<h3><code>http://</code>のURLを<code>https://</code>のURLにする</h3>
<p>上行が書き換えの条件、下行が書き換えの内容です。</p>
<pre><code class="line-numbers">RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</code></pre>
<p>SSLのアクセスではない場合に、URLの先頭を<code>https://</code>に書き換えます。</p>
<p><code>%{HTTP_HOST}</code>と<code>%{REQUEST_URI}</code>はアクセスのあったURLに応じて以下のような文字列に置き換えられます。</p>
<pre><code class="line-numbers">URL = http://www.example.com/index.html?p=123
%{HTTP_HOST} = www.example.com
%{REQUEST_URI} = /index.html?p=123

https://%{HTTP_HOST}%{REQUEST_URI} -&gt; https://www.example.com/index.html?p=123
</code></pre>
<p>末尾の<code>[L,R=301]</code>に関しては詳細を省きますが、リダイレクトが恒久的なリダイレクトであることを表します。</p>
<p><code>R=300</code>とするとそのリダイレクトは一時的なものであると認識されます。</p>
<h3><code>www</code>を付ける</h3>
<p><code>www</code>無しのURLで運用している場合(<code>https://kthksgy.com</code>)や、サブドメインで運用している場合(<code>https://subdomain.kthksgy.com</code>)は以下の2行を省いてください。</p>
<p>上行は『ホスト名の先頭が<code>www.</code>ではない場合』の条件を表します。</p>
<p>下行は<code>https://</code>の時と同じく書き換えを行います。</p>
<pre><code class="language-htaccess line-numbers">RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.kthksgy.com/web/redirect-https-www/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
