正しい .htaccessリダイレクト 2018年版

たまにしか使わないのでよく忘れてしますhtaccessのリダイレクトを個人的にメモしておきます。なお、記述は一例なので、他の書き方ももちろんあります。

※省略していますが、外側は、<IfModule mod_rewrite.c>~~~<IfModule>で囲む必要があります。

 

特定のファイルの301リダイレクト

 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule XXXXX.html 絶対パス [R=301,L]
</IfModule>

旧ページ(XXXXX.html)から変更先のページ(絶対パス)に301リダイレクト

htmlファイルの名前やディレクトリを変更した場合や、ファイルの拡張子をhtmlからphpに変更した場合などに役に立ちます。

※RewriteBaseの記述がないとエラーになることがあるので、注意。

 

ドメインをwww無しに統一

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.XXXXX\.co\.jp
RewriteRule ^(.*)$ http://XXXXX.co.jp/$1 [R=301,L]

記述の意味は、URLにwwwが付いている場合に、www無しのドメインに書き換えるということですね。

※[\]バックスラッシュは、実際は半角の「¥」でエスケープシーケンス(エスケープ文字)で使っています。

 

httpからhttpsへのリダイレクト

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://XXXXX.jp/$1 [R=301,L]

記述の意味ですが、httpsになっていないURLの場合にhttpsに書き換えるという意味になります。

一般的な記述は上記でOKなのですが(lolipop/XSERVERで確認)、

2018.8 GMO CLOUDのiCLUTA+サーバーでは上記記述ではエラーとなりました。
調べてみると、公式のヘルプ「iCLUSTAシリーズの.htaccess仕様に関して」の箇所に、

利用可能ディレクティブに関して

以下の記述はiCLUSTAサーバーにて非対応となっております。
下記の記載があった場合にはリダイレクトが有効になりませんのでご注意ください。

RewriteCond %{HTTPS} off

 

なんですと!( ゚Д゚;)

しかし、同じページにhttpsへのリダイレクト記述方法が書いてありました。

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

 

ということで上記のコピペでhttpsへの転送(リダイレクト)を確認できました(2018年8月2日)。

【ソース】GMOクラウドHELP
https://help.gmocloud.com/app/answers/detail/a_id/1417/related/1

 

 

 


Adv.

 

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA