mod_rewrite:リダイレクト処理
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[Apache]]
*目次 [#oda6be8a]
-[[フラグの意味>#o3095730]]
-[[同じドメインの別ディレクトリにあるファイルへのリダイレ...
-[[別ドメインのアドレスへリダイレクト処理を実施する。>#ea...
-[[別ドメインのアドレスをリダイレクト処理する(AからBへ)...
-[[index.phpとindex.htmlのアクセスを統一させる。>#v9afdb9...
-[[特定のページのみアクセスを許可する >#a316f59d]]
-[[トップページへのアクセスのみリダイレクト>#ic03f860]]
-[[スマフォサイトへリダイレクトする記述 >#e532b42a]]
-[[あるディレクトリへのアクセスの際に、そのディレクトリの...
-[[スラッシュの有無の統一>#z1655ef4]]
-[[URLの書き換え www有りへの統一>#m056784a]]
-[[URLの書き換え www無しへ統一>#bd4f1f55]]
-[[特定のディレクトリの配下のみサブドメインを統一する>#ye...
-[[Apacheでhttp://*のアクセスを全てhttps://にリダイレクト...
-[[特定のディレクトリのみhttpsへリダイレクトし、それ以外...
-[[Pound配下の場合>#s247f548]]
-[[同一ディレクトリ内の別のディレクトリは除外して、当該デ...
***パラメータ関連 [#i30d1422]
-[[CGIなどのGETパラメータを持っているURLを別のパラメータ...
-[[CGIなどのGETパラメータを持っているURLを同じパラメータ...
-[[特定のIPアドレスからのアクセスは除外して、それ以外はリ...
-[[例:メンテナンスで社外からはメンテナンスページを表示さ...
-[[存在しない複数URLに対して>#p35bc1d2]]
-[[例2.別のドメインやURLにリダイレクトする>#o61ceea2]]
-[[注意事項>#d2915bbd]]
*備考:2015年11月5日追記 [#ca6a4ef2]
メンテナンスページへのリダイレクトについては、下の方の302...
理由として302リダイレクトだとリダイレクト先ページは200番...
詳細はこちら↓~
http://web-tan.forum.impressrd.jp/e/2009/06/16/5880
***メンテナンスページへのリダイレクト [#m95189b2]
Apacheのconfへの記述の仕方です。.htaccessも下記を参考にし...
### Maintenance
Alias /maint /var/www/maint
ErrorDocument 503 /maint/index.html
Header set Retry-After "Fri, 06 Jun 2015 0:00:00 GMT"
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.99$
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.100$
RewriteCond %{REQUEST_URI} !^/maint/index.html
RewriteRule ^.*$ /maint/index.html [R=503,L]
*フラグの意味 [#o3095730]
| NC |大文字小文字を無視|
|L |変換打ち切り(確定)|
|R| リダイレクト|
|R=301|ドメインの永久移転 ※永久的にリダイレクトさせる場...
|R=302|ドメインの一時移転 ※一時的にリダイレクトさせる場...
|NE |エスケープしない|
|OR|OR条件。記述なしでデフォルトAND条件|
~
*同じドメインの別ディレクトリにあるファイルへのリダイレク...
Apacheにて「mod_rewrite」が読み込まれている場合は、Rewrit...
下記記述をhttpd.confに追記してください。
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/user_data/maintenance.php$...
RewriteCond %{REQUEST_URI} !^/user_data/img/maintenance/...
RewriteRule ^.*$ /user_data/maintenance.php [R,L]
※RewriteCondにて、リダイレクト処理を除外しています。
最後に[NC]を記述することで、次のルールに処理を渡してい...
~
*別ドメインのアドレスへリダイレクト処理を実施する。 [#ea9...
httpd.confのDocumentrootの下に以下を追記してください。~
<Directory />
Redirect / http://hogehoge.com
</Directory>
※「/」がDocumentRoot配下を意味しています。
*別ドメインのアドレスをリダイレクト処理する(AからBへ) [...
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.hogehoge\.net [NC]
RewriteRule ^(.*)$ http://www.hogehoge.jp/$1 [R=301,L]
*index.phpとindex.htmlのアクセスを統一させる。 [#v9afdb9e]
例えばトップページで使用していないindex.htmlをindex.phpに...
別の拡張子も同様です。
### Redirect
RewriteEngine On
RewriteRule ^/index.html$ http://%{HTTP_HOST} [R=301,L]
*特定のページのみアクセスを許可する [#a316f59d]
特定のページのみアクセスを許可する場合で、他ページはリダ...
RewriteCond %{HTTP_REFERER} !^http://(www\.)?hoge\.com/a...
RewriteCond %{REQUEST_URI} !^/admin/*.*$ [NC]
上記例では、/admin/配下のページへのアクセスを許可する設定...
/admin以外のページにアクセスした場合は全てリダイレクト処...
しかしながら、/adminの直下にあるindex.phpおよびlogin.php...
httprefererを使用することで、当該ディレクトリ配下のリダイ...
*トップページへのアクセスのみリダイレクト [#ic03f860]
RewriteEngine On
RewriteRule ^/$ http://inamuu.com/ [R=301,L]
トップページへのアクセスのみをリダイレクトさせて、その配...
~
*スマフォサイトへリダイレクトする記述 [#e532b42a]
RewriteEngine On
RewriteCond %{Request_URI} !^/live/mobile/(.*)$ [NC]
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|iPad|Androi...
RewriteRule ^/live/(.*)$ /live/mobile/$1 [R,L]
~
*あるディレクトリへのアクセスの際に、そのディレクトリの配...
hoge配下に複数ファイルがあって、アクセスURLが/hoge/2013...
RewriteCond の!エクスクラメーションマークにて除外してい...
RewriteEngine On
RewriteCond %{REQUEST_URI} !/hoge/.+ [NC]
RewriteRule ^/hoge /hoge/2013/ [R=301,L]
~
*スラッシュの有無の統一 [#z1655ef4]
RewriteEngine On
RewriteRule ^/hoge/2013$ /hoge/2013/ [R=301,L]
*URLの書き換え www有りへの統一 [#m056784a]
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
*URLの書き換え www無しへ統一 [#bd4f1f55]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.hogehoge\.com
RewriteRule ^(.*) http://hogehoge.com$1 [R=301,L]
※R=301は301リダイレクトと呼ばれ、永久移転を表す。
*特定のディレクトリの配下のみサブドメインを統一する [#ye8...
RewriteEngine On
RewriteCond %{HTTP_HOST} ^inamuu\.com
RewriteCond %{REQUEST_URI} ^/testdir/
RewriteRule ^(.*) http://www.inamuu.com$1 [R=301,L]
~
*Apacheでhttp://*のアクセスを全てhttps://にリダイレクトす...
# vi /etc/httpd/conf.d/rewrite.conf
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R...
*特定のディレクトリのみhttpsへリダイレクトし、それ以外はh...
### httpd.confに記述(80番)80番でhogeにきたらhttpsへリ...
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} ^/hoge/.*$
RewriteRule /.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R=3...
### ssl.confに記述(443番)443番でhoge以外にきたらhttpに...
RewriteEngine On
RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{REQUEST_URI} !^/hoge/
RewriteRule /.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R=30...
***Pound配下の場合 [#s247f548]
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^/(.*)?$ https://%{HTTP_HOST}/$1 [L,R]
※条件としてPoundからヘッダーにhttpという情報が付与されて...
-[[Pound配下のサーバーへの接続をすべてSSLリダイレクトする...
*同一ディレクトリ内の別のディレクトリは除外して、当該ディ...
例えば、http://inamuu.com/test01/ から /top/へリダイレク...
/test01/配下のディレクトリは無視させたい場合は、下記の通...
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/test01/(.+)$ [NC]
RewriteRule ^/test01/(.*)$ /top/ [R,L]
「+」をつけることで1文字以上存在すればリダイレクトする。
*パラメータ関連 [#v517ca6d]
-通常、パラメータは無視されるので、query_stringオプション...
***PHPパラメータを持つURLへアクセスがあったらリダイレクト...
RewriteEngine On
RewriteCond %{QUERY_STRING} it_id=1393347333
RewriteRule ^/item.php http://inamuu.com/yoyaku/index.ph...
~
''備考''
query_stringでパラメータを指定すると、リダイレクト後もパ...
参考URL:http://d.hatena.ne.jp/shimooka/20070328/1175047714
***CGIなどのGETパラメータを持っているURLを別のパラメータ...
RewriteEngine On
RewriteCond %{QUERY_STRING} c=list&category_b_pk=1$
RewriteRule ^/cgi-bin/index.cgi products/list.php?catego...
***CGIなどのGETパラメータを持っているURLを同じパラメータ...
RewriteEngine On
RewriteCond %{QUERY_STRING} c=list&category_b_pk=1$
RewriteRule ^/cgi-bin/index.cgi products/list.php? [R=30...
?をURLの末尾に付与すると、元のGETパラメータをそのまま持つ
*特定のIPアドレスからのアクセスは除外して、それ以外はリダ...
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.1$
RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.2$
RewriteRule ^index.html /mainte.html [R=302,L]
外部にはメンテナンス画面を表示させて、社内には通常どおり...
~
~
***例:メンテナンスで社外からはメンテナンスページを表示さ...
DocumentRootが/var/www/html
メンテナンス用のディレクトリが/var/www/maintenance
メンテナンス用のファイルがindex.htmlとlogo.gifで上記ディ...
下記の記述をApacheのconfファイルに記述する ※数字の所を...
### Maintenance
Alias /maintenance /var/www/html/maintenance
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/maintenance/(.*)$ [NC]
RewriteCond %{REMOTE_ADDR} !123\.456\.789\.101$
RewriteCond %{REMOTE_ADDR} !102\.103\.104\.105$
RewriteRule ^/(.*)$ /maintenance/index.html [R=302,L]
*存在しない複数URLに対して [#p35bc1d2]
サーバー移行等でURLが代わり、リンク切れをさせないための対...
***例1.同じURLへリダイレクトする [#j08aaa2e]
RewriteEngine On
RewriteCond ${REQUEST_URI} ^/about [OR]
RewriteCond $REQUEST_URI} ^/news [OR]
RewriteRule ^/(.*)$ http://www.inamuu.com/ [R=301,L]
***例2.別のドメインやURLにリダイレクトする [#o61ceea2]
RewriteEngine On
RewriteRule ^/news http://www.inamuu.com/ [R=301,L]
RewriteRule ^/about http://www.inamuu.com/test/ [R=301,L]
RewriteRule ^/locate http://test.inamuu.com/locate/ [R=3...
*注意事項 [#d2915bbd]
VirtualhostやSSLを使用した場合は、それぞれのコンフィグフ...
*参考書籍 [#h8beebe3]
[[Apache実践運用>http://www.amazon.co.jp/gp/product/47741...
終了行:
[[Apache]]
*目次 [#oda6be8a]
-[[フラグの意味>#o3095730]]
-[[同じドメインの別ディレクトリにあるファイルへのリダイレ...
-[[別ドメインのアドレスへリダイレクト処理を実施する。>#ea...
-[[別ドメインのアドレスをリダイレクト処理する(AからBへ)...
-[[index.phpとindex.htmlのアクセスを統一させる。>#v9afdb9...
-[[特定のページのみアクセスを許可する >#a316f59d]]
-[[トップページへのアクセスのみリダイレクト>#ic03f860]]
-[[スマフォサイトへリダイレクトする記述 >#e532b42a]]
-[[あるディレクトリへのアクセスの際に、そのディレクトリの...
-[[スラッシュの有無の統一>#z1655ef4]]
-[[URLの書き換え www有りへの統一>#m056784a]]
-[[URLの書き換え www無しへ統一>#bd4f1f55]]
-[[特定のディレクトリの配下のみサブドメインを統一する>#ye...
-[[Apacheでhttp://*のアクセスを全てhttps://にリダイレクト...
-[[特定のディレクトリのみhttpsへリダイレクトし、それ以外...
-[[Pound配下の場合>#s247f548]]
-[[同一ディレクトリ内の別のディレクトリは除外して、当該デ...
***パラメータ関連 [#i30d1422]
-[[CGIなどのGETパラメータを持っているURLを別のパラメータ...
-[[CGIなどのGETパラメータを持っているURLを同じパラメータ...
-[[特定のIPアドレスからのアクセスは除外して、それ以外はリ...
-[[例:メンテナンスで社外からはメンテナンスページを表示さ...
-[[存在しない複数URLに対して>#p35bc1d2]]
-[[例2.別のドメインやURLにリダイレクトする>#o61ceea2]]
-[[注意事項>#d2915bbd]]
*備考:2015年11月5日追記 [#ca6a4ef2]
メンテナンスページへのリダイレクトについては、下の方の302...
理由として302リダイレクトだとリダイレクト先ページは200番...
詳細はこちら↓~
http://web-tan.forum.impressrd.jp/e/2009/06/16/5880
***メンテナンスページへのリダイレクト [#m95189b2]
Apacheのconfへの記述の仕方です。.htaccessも下記を参考にし...
### Maintenance
Alias /maint /var/www/maint
ErrorDocument 503 /maint/index.html
Header set Retry-After "Fri, 06 Jun 2015 0:00:00 GMT"
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.99$
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.100$
RewriteCond %{REQUEST_URI} !^/maint/index.html
RewriteRule ^.*$ /maint/index.html [R=503,L]
*フラグの意味 [#o3095730]
| NC |大文字小文字を無視|
|L |変換打ち切り(確定)|
|R| リダイレクト|
|R=301|ドメインの永久移転 ※永久的にリダイレクトさせる場...
|R=302|ドメインの一時移転 ※一時的にリダイレクトさせる場...
|NE |エスケープしない|
|OR|OR条件。記述なしでデフォルトAND条件|
~
*同じドメインの別ディレクトリにあるファイルへのリダイレク...
Apacheにて「mod_rewrite」が読み込まれている場合は、Rewrit...
下記記述をhttpd.confに追記してください。
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/user_data/maintenance.php$...
RewriteCond %{REQUEST_URI} !^/user_data/img/maintenance/...
RewriteRule ^.*$ /user_data/maintenance.php [R,L]
※RewriteCondにて、リダイレクト処理を除外しています。
最後に[NC]を記述することで、次のルールに処理を渡してい...
~
*別ドメインのアドレスへリダイレクト処理を実施する。 [#ea9...
httpd.confのDocumentrootの下に以下を追記してください。~
<Directory />
Redirect / http://hogehoge.com
</Directory>
※「/」がDocumentRoot配下を意味しています。
*別ドメインのアドレスをリダイレクト処理する(AからBへ) [...
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.hogehoge\.net [NC]
RewriteRule ^(.*)$ http://www.hogehoge.jp/$1 [R=301,L]
*index.phpとindex.htmlのアクセスを統一させる。 [#v9afdb9e]
例えばトップページで使用していないindex.htmlをindex.phpに...
別の拡張子も同様です。
### Redirect
RewriteEngine On
RewriteRule ^/index.html$ http://%{HTTP_HOST} [R=301,L]
*特定のページのみアクセスを許可する [#a316f59d]
特定のページのみアクセスを許可する場合で、他ページはリダ...
RewriteCond %{HTTP_REFERER} !^http://(www\.)?hoge\.com/a...
RewriteCond %{REQUEST_URI} !^/admin/*.*$ [NC]
上記例では、/admin/配下のページへのアクセスを許可する設定...
/admin以外のページにアクセスした場合は全てリダイレクト処...
しかしながら、/adminの直下にあるindex.phpおよびlogin.php...
httprefererを使用することで、当該ディレクトリ配下のリダイ...
*トップページへのアクセスのみリダイレクト [#ic03f860]
RewriteEngine On
RewriteRule ^/$ http://inamuu.com/ [R=301,L]
トップページへのアクセスのみをリダイレクトさせて、その配...
~
*スマフォサイトへリダイレクトする記述 [#e532b42a]
RewriteEngine On
RewriteCond %{Request_URI} !^/live/mobile/(.*)$ [NC]
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|iPad|Androi...
RewriteRule ^/live/(.*)$ /live/mobile/$1 [R,L]
~
*あるディレクトリへのアクセスの際に、そのディレクトリの配...
hoge配下に複数ファイルがあって、アクセスURLが/hoge/2013...
RewriteCond の!エクスクラメーションマークにて除外してい...
RewriteEngine On
RewriteCond %{REQUEST_URI} !/hoge/.+ [NC]
RewriteRule ^/hoge /hoge/2013/ [R=301,L]
~
*スラッシュの有無の統一 [#z1655ef4]
RewriteEngine On
RewriteRule ^/hoge/2013$ /hoge/2013/ [R=301,L]
*URLの書き換え www有りへの統一 [#m056784a]
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
*URLの書き換え www無しへ統一 [#bd4f1f55]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.hogehoge\.com
RewriteRule ^(.*) http://hogehoge.com$1 [R=301,L]
※R=301は301リダイレクトと呼ばれ、永久移転を表す。
*特定のディレクトリの配下のみサブドメインを統一する [#ye8...
RewriteEngine On
RewriteCond %{HTTP_HOST} ^inamuu\.com
RewriteCond %{REQUEST_URI} ^/testdir/
RewriteRule ^(.*) http://www.inamuu.com$1 [R=301,L]
~
*Apacheでhttp://*のアクセスを全てhttps://にリダイレクトす...
# vi /etc/httpd/conf.d/rewrite.conf
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R...
*特定のディレクトリのみhttpsへリダイレクトし、それ以外はh...
### httpd.confに記述(80番)80番でhogeにきたらhttpsへリ...
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} ^/hoge/.*$
RewriteRule /.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R=3...
### ssl.confに記述(443番)443番でhoge以外にきたらhttpに...
RewriteEngine On
RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{REQUEST_URI} !^/hoge/
RewriteRule /.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R=30...
***Pound配下の場合 [#s247f548]
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^/(.*)?$ https://%{HTTP_HOST}/$1 [L,R]
※条件としてPoundからヘッダーにhttpという情報が付与されて...
-[[Pound配下のサーバーへの接続をすべてSSLリダイレクトする...
*同一ディレクトリ内の別のディレクトリは除外して、当該ディ...
例えば、http://inamuu.com/test01/ から /top/へリダイレク...
/test01/配下のディレクトリは無視させたい場合は、下記の通...
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/test01/(.+)$ [NC]
RewriteRule ^/test01/(.*)$ /top/ [R,L]
「+」をつけることで1文字以上存在すればリダイレクトする。
*パラメータ関連 [#v517ca6d]
-通常、パラメータは無視されるので、query_stringオプション...
***PHPパラメータを持つURLへアクセスがあったらリダイレクト...
RewriteEngine On
RewriteCond %{QUERY_STRING} it_id=1393347333
RewriteRule ^/item.php http://inamuu.com/yoyaku/index.ph...
~
''備考''
query_stringでパラメータを指定すると、リダイレクト後もパ...
参考URL:http://d.hatena.ne.jp/shimooka/20070328/1175047714
***CGIなどのGETパラメータを持っているURLを別のパラメータ...
RewriteEngine On
RewriteCond %{QUERY_STRING} c=list&category_b_pk=1$
RewriteRule ^/cgi-bin/index.cgi products/list.php?catego...
***CGIなどのGETパラメータを持っているURLを同じパラメータ...
RewriteEngine On
RewriteCond %{QUERY_STRING} c=list&category_b_pk=1$
RewriteRule ^/cgi-bin/index.cgi products/list.php? [R=30...
?をURLの末尾に付与すると、元のGETパラメータをそのまま持つ
*特定のIPアドレスからのアクセスは除外して、それ以外はリダ...
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.1$
RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.2$
RewriteRule ^index.html /mainte.html [R=302,L]
外部にはメンテナンス画面を表示させて、社内には通常どおり...
~
~
***例:メンテナンスで社外からはメンテナンスページを表示さ...
DocumentRootが/var/www/html
メンテナンス用のディレクトリが/var/www/maintenance
メンテナンス用のファイルがindex.htmlとlogo.gifで上記ディ...
下記の記述をApacheのconfファイルに記述する ※数字の所を...
### Maintenance
Alias /maintenance /var/www/html/maintenance
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/maintenance/(.*)$ [NC]
RewriteCond %{REMOTE_ADDR} !123\.456\.789\.101$
RewriteCond %{REMOTE_ADDR} !102\.103\.104\.105$
RewriteRule ^/(.*)$ /maintenance/index.html [R=302,L]
*存在しない複数URLに対して [#p35bc1d2]
サーバー移行等でURLが代わり、リンク切れをさせないための対...
***例1.同じURLへリダイレクトする [#j08aaa2e]
RewriteEngine On
RewriteCond ${REQUEST_URI} ^/about [OR]
RewriteCond $REQUEST_URI} ^/news [OR]
RewriteRule ^/(.*)$ http://www.inamuu.com/ [R=301,L]
***例2.別のドメインやURLにリダイレクトする [#o61ceea2]
RewriteEngine On
RewriteRule ^/news http://www.inamuu.com/ [R=301,L]
RewriteRule ^/about http://www.inamuu.com/test/ [R=301,L]
RewriteRule ^/locate http://test.inamuu.com/locate/ [R=3...
*注意事項 [#d2915bbd]
VirtualhostやSSLを使用した場合は、それぞれのコンフィグフ...
*参考書籍 [#h8beebe3]
[[Apache実践運用>http://www.amazon.co.jp/gp/product/47741...
ページ名: