令和元年9月24日

htaccessのコピペで使えるコード集

制作やwebサイトの管理をする仕事の中で、頻出して使用したhtaccessのコードをご紹介します。(個人的なメモ用も込み…)

htaccessのコード一覧

スマホサイトへ転送

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC]
RewriteCond %{QUERY_STRING} !mode=pc
RewriteRule ^$ /sp/ [R,L]
</IfModule>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC]
RewriteCond %{QUERY_STRING} !mode=pc
RewriteRule ^$ /sp/ [R,L]

ドメイン制御

www有無

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://example.com/$1 [R=301,L]

index有無

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

ページのリダイレクト

全ページ一括リダイレクト

RewriteEngine On
RewriteRule ^(.*)$ http://www.new.com/$1 [R=301,L]

エラーページのリダイレクト

ErrorDocument 401 /index.php
ErrorDocument 403 /index.php
ErrorDocument 404 /index.php
ErrorDocument 500 /index.php

旧URL ⇒ 新URLへリダイレクト

RewriteEngine on
RewriteBase /
RewriteRule ^old_page.html$ http://exaple.com/new_page.html [R=301,L]

クエリを含む旧URLのリダイレクト

RewriteEngine on
RewriteCond %{REQUEST_URI} /cgi-bin/old_page.php
RewriteCond %{QUERY_STRING} ^cc=1&gc=3&ic=00000134
RewriteRule ^(.*)$ http://exaple.com/new_page.php?product_id=17 [R=301,L]

同サーバー内のAページ⇒Bページへのリダイレクト

Redirect permanent ^old_example/ /new_example/

メンテナンス用リダイレクト

ErrorDocument 503 /{ページファイル名}

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/{ページファイル名}
RewriteRule ^.*$ - [R=503,L]
</IfModule>

一部ページを除外してリダイレクト

RewriteEngine on 
RewriteBase /
RewriteCond %{REQUEST_URI} !^/yoyaku/$
RewriteCond %{REQUEST_URI} !^/r_recruit/index.html$
RewriteCond %{REQUEST_URI} !^/r_graduate/index.html$ 
RewriteRule ^(.*)$ http://www.2211.work/ [L,R]

メンテナンス画面にリダイレクト(自分のIPだけ除外)

RewriteCond %{REQUEST_URI} !({メンテナンスページのディレクトパス})
RewriteCond %{REMOTE_ADDR} !^(自分のグローバルアドレス)$
RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpg|jpeg|css)$ [NC]
RewriteRule ^.*$ /{メンテナンスページのディレクトパス} [R=302,L]

旧ドメイン⇒新ドメインへリダイレクト

RewriteEngine On
RewriteCond %{http_host} ^old.domain.com
RewriteRule ^(.*) http://new.domain.com/$1 [R=301,L]

html⇒php 拡張子のみ変換して301リダイレクト

RewriteEngine on
RewriteBase /
RewriteRule ^(.*).html$ $1.php [R=301,L]

文字コードを変更

Shift-JISに変更

AddDefaultCharset shift-jis
AddType "text/html; charset=shift-jis" .html .php

php_value default_charset Shift_JIS
php_value mbstring.language Japanese
php_value mbstring.http_input auto
php_value mbstring.http_output SJIS
php_value mbstring.internal_encoding Shift_JIS

UTF-8に変更

php_value output_buffering OFF
php_value default_charset UTF-8
php_value mbstring.detect_order SJIS,EUC-JP,JIS,UTF-8,ASCII
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.internal_encoding UTF-8
php_value mbstring.substitute_character none
php_value mbstring.encoding_translation OFF

EUC-JPに変更

php_value default_charset euc-jp
php_flag output_buffering Off
php_value output_handler none
php_value mbstring.language japanese
php_value mbstring.internal_encoding euc-jp
php_flag mbstring.encoding_translation Off
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.substitute_character none

ベーシック認証を掛ける

全ページに設定

AuthUserFile /home/wwwboj-boj.com/public_html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
order deny,allow
require valid-user

特定のファイルのみ設定

<Files target.php>
AuthUserFile /home/wwwboj-boj.com/public_html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
order deny,allow
require valid-user
</Files>

ベーシック認証を掛けるには.htpasswordでIDとパスワードを発行しないといけない為、下記URLから htpassword を作成してください。

http://www.htaccesseditor.com/#a_basic

.htmlの拡張子でphpのコードを実行する

AddType application/x-httpd-php .php .html
AddHandler application/x-httpd-php .php .html
php_flag allow_url_fopen on
php_flag allow_url_include on
最後まで読んでいただきありがとうございます。
今回の記事が気に入ったら、是非下記ボタンよりシェアをよろしくお願いします。