.htaccess
を使えば、共用サーバーでも 管理エリア保護 や アクセス制御、SEO を損なわないリダイレクト が実装できます。ここでは概要と主要レシピを示し、詳しい運用例は必要に応じて拡張してください。
1. Basic認証でディレクトリ保護
1.1 .htpasswd
を作成
- SSH がある場合
htpasswd -c /home/user/.htpasswd adminuser
- SSH が使えない場合
Web の「htpasswd 生成ツール」で暗号化文字列を生成 →.htpasswd
に貼り付けてアップロード。
1.2 .htaccess
記述例
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /home/user/.htpasswd
Require valid-user
ポイント:
AuthUserFile
は絶対パス。プランごとに異なるのでサーバー情報で確認。
2. IP制限でアクセスコントロール
<RequireAll>
Require all denied # デフォルト拒否
Require ip 203.0.113.5 # 固定 IP
Require ip 198.51.100.0/24 # 社内 CIDR
</RequireAll>
- 複数 IP は行を分けて列挙。
- 動的 IP なら VPN で固定化 or Basic 認証と併用が現実的。
- Cloudflare など CDN 配下なら、
CF-Connecting-IP
ヘッダーで制御する手法も。
3. HTTP→HTTPS・www 統一リダイレクト
3.1 常時 SSL(HTTP → HTTPS)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
3.2 非 www → www へ統一
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
ポイント
- 301 リダイレクトを使用し、検索エンジンに恒久的変更を通知。
- SSL 証明書は
example.com
とwww.example.com
の両方をカバー。
4. トラブルシュート
症状 | 主な原因 | 対応策 |
---|---|---|
500 Internal Server Error | .htaccess 構文エラー | 1 行ずつコメントアウトし、原因行を特定 |
ログインポップアップ無限ループ | AuthUserFile パス不一致/パーミッション不足 | 絶対パス再確認・.htpasswd を 600~640 に |
IP 制限が効かない | CDN 経由で実 IP が見えない | Require env と SetEnvIf でヘッダー値を参照 |
HTTPS リダイレクトで無限ループ | 既に HTTPS でも再リダイレクト | RewriteCond %{HTTPS} off を忘れずに |
5. まとめ & 次のステップ
- Basic認証 でステージングや管理画面をパスワード保護。
- IP 制限 でさらに攻撃対象を絞り込み。
- 301 リダイレクト で HTTPS 常時化 & URL 統一を行い、SEO を維持。
次は [SSHキー認証(対応プランのみ)] へ進み、パスワードを使わない安全な接続方式を導入しましょう。