端くれプログラマの備忘録 Apache [Apache] mod_rewiteの書き方の例

[Apache] mod_rewiteの書き方の例

たまにしか書かないので、必要な時にはいつも書き方忘れてる。なので、よく使いそうな書き方を参考サイトから拾って覚書き。

# index.phpなら何もしないで完了
RewriteRule ^index\.php$ - [L]
# ファイルが存在しない
RewriteCond %{REQUEST_FILENAME} !-f
# かつ、ディレクトリが存在しない
RewriteCond %{REQUEST_FILENAME} !-d
# どんなリクエストでも/hoge/index.phpへ置換して完了
RewriteRule . /hoge/index.php [L]
# httpsじゃなくて
RewriteCond %{HTTPS} off
# foo.htmlへのアクセスならば404
RewriteRule ^foo\.html$ - [R=404,L]
# aaa/bbb/index.htmlの形式の場合
# %1=aaa
# %2=bbb
RewriteCond %{REQUEST_FILENAME} ^(.*)/(.*)/index.html$
# $1=bbb
# $2=index.html
# aaaがexならば/bbb/ex/index.htmlに置換される
RewriteRule ^/ex/(.*)/(.*)$ /$1/%1/$2
# *.amazonaws.comからのアクセス
# [NC] 大小文字区別なし
RewriteCond %{REMOTE_HOST} "^.*\.amazonaws\.com" [NC]
# リファラが無い
RewriteCond %{HTTP_REFERER} ^$
# Accept-Languageがen-us
RewriteCond %{HTTP:Accept-Language} "^en-us" [NC]
# [F] 403(Fobidden)を返す
RewriteRule ^.*$ - [F,L]

参考サイト

[Apache] mod_rewriteの使い方・.htaccessでリダイレクトする | Ago Hack
https://agohack.com/mod_rewrite_rule_cond_base/

mod_rewriteで特定のアクセスを拒否する+mod_rewriteの再整理 – Qiita
https://qiita.com/kite_999/items/a169484c3134b91d37e9

Apacheのmod_rewriteモジュールの使い方を徹底的に解説 | OXY NOTES
https://oxynotes.com/?p=7392

全てのWeb担に捧げるRewrite設定集 | TECHSCORE BLOG
https://www.techscore.com/blog/2014/12/16/%E5%85%A8%E3%81%A6%E3%81%AEweb%E6%8B%85%E3%81%AB%E6%8D%A7%E3%81%92%E3%82%8Bwrite%E8%A8%AD%E5%AE%9A%E9%9B%86/

Mod_Rewrite Variables Cheatsheet
https://www.askapache.com/htaccess/mod_rewrite-variables-cheatsheet/