• このエントリーをはてなブックマークに追加

RewriteRule www有りに変更

wwwありのURLに統一するRewriteルール。

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

RewriteRule www無しに変更

wwwありのURLを無しに統一する方法。wwwありだとわかりやすいが、無い方だとURLが短くなって、限られた範囲内にURLを記述するときなどに重宝するサイトとなる。

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

RewriteRuleでindexを「/」に省略

index.html、index.htm、index.phpの3種類のindexファイルにアクセス(そのURLをリクエスト)してきた時に、/に書き換えるRewriteルール。

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

古いディレクトリから新しいディレクトリにRewrite

新しいドメインに移設した際、違うドメインで同じURLにRewriteするサンプルコードスニペット。

リクエストされたURLやパラメータを引き継がずにリダイレクトなどを行う場合はシンプルですぐ済ませられるが、

RewriteEngine On
RewriteRule ^old_dir(.*)$ /new_dir$1 [R=301,L]

特定のディレクトリ内のリクエストのみRewriteして、引き継ぐ。

RewriteEngine On
RewriteRule ^/old_dir/(.*)$ /new_dir/$1 [R=301,L]

特定のファイルのみRewrite

リダイレクトでも可能だが、Rewriteでも同じように新しい飛び先に設定することが可能なサンプル。

# 特定ファイルのみ転送する HTML→PHP
RewriteEngine On
RewriteRule ^company.html$ /company.php [R=301,L]
RewriteRule ^location.html$ /location.php [R=301,L]
RewriteRule ^village.html$ /village.php [R=301,L]
RewriteRule ^city.html$ /city.php [R=301,L]
RewriteRule ^room.html$ /room.php [R=301,L]
RewriteRule ^index.html$ / [R=301,L]

1ファイルだけ。

# 特定ファイルのみ転送する HTML→PHP
RewriteEngine On
RewriteRule ^company.html$ /company.php [R=301,L]

指定ディレクトリに集約する

指定のディレクトリにリクエストされた値を引き継ぎながらまとめて、サブディレクトリ配下に再配置する。

RewriteEngine on
RewriteBase /
RewriteRule ^(.*) https://example.com/ディレクトリ名/$1 [R=301,L]