htaccess」タグアーカイブ

日本語文字列を含むURLのRewrite

Apacheで.htaccessを使って日本語文字列を含むURLをリダイレクトしたい場合は次のような方法があるみたいです。

直接日本語文字列で書く方法

リダイレクトしたい文字列をそのまま日本語で書きます。
.htaccessのファイルはUTF-8にしておくのがよいと思います。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/日本語/$ /英語/ [R=301,L]
</IfModule>

URLエンコードする方法

\記号によるエスケープとNEオプションを使って次のような感じで記述します。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/日本語/$ /\%E8\%8B\%B1\%E8\%AA\%9E/ [NE,R=301,L]
</IfModule>

どちらの方法を使っても結果は同じですので、使いやす方を試してみてください。

htaccessでwwwのアリとナシで統一

wwwアリで統一する場合

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

wwwナシで統一する場合

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

example.comの部分を使いたいドメインに変更します。

htaccessとhtpasswdを使ったBasic認証の設定

Basic認証は安全性に問題があり本格的に使うことは稀と思いますが、簡単に設置できるので簡易的なアクセス管理に便利です。

.htpasswdの作成

SSHなどで設置先のサーバーにログインできるという前提で説明します。

SSHでログインできない場合は、ローカルPCなどで.htpasswdを作成してアップロードすることになります。

新規作成

以下はlolipopというユーザー名で作成するサンプルです。

パスワードを聞かれますので、入力してください。

$ htpasswd -c .htpasswd lolipop
New password:
Re-type new password:
Adding password for user lolipop

作成される.htpasswdは次のようになります。

$ cat .htpasswd
lolipop:$apr1$hgHnvE.E$NAxrrnRVtg94iwPYHRpZT0

追加

lolipopというユーザー名を追加するサンプルです。

$ htpasswd lolipop
New password:
Re-type new password:
Adding password for user lolipop

.htaccessの設定

アクセス制限をかけたい場所に.htaccessを置きます。 /var/www/localhost/htdocs/.htpasswdは、実際には.htpasswdが置かれているパスに書き換えてください。

AuthUserFile /var/www/localhost/htdocs/.htpasswd
AuthName "example"
AuthType Basic
require valid-user

.htpasswd.htaccessに直接アクセスされないように次のアクセス制限も追加できます。(/etc/apache2/httpd.confなどで設定されている場合は不要です。)

<Files ~ "^.(htpasswd|htaccess)$">
  deny from all
</Files>

ローカルPCにhtpasswd実行環境がない場合は、.htpasswd作成ツール(サーバー移転に伴いサービス終了しました)などでも作成できます。