WEBページへアクセスした時のURLを書き換えてみます
<環境>
Centos 6
Apache 2.2
.htaccessを使うか、httpd.confに直接書きます
1.
http://example.com/sample or http://example.com/sample/
のアクセスを
http://example.com/sample.html
にする
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/sample/?$
RewriteRule ^(.*)$ http://example.com/sample.html [L,R]
REQUEST_URIはスラッシュ(/)付きで始まります
RewriteCondの「/?」は、「/」が0個か1個かという意味、
RewriteRuleの[L]=ここで終わり、[R]=リダイレクトの意味です
2.
http://example.com/
のアクセスを
http://blog.example.com/
にする
RewriteCond %{HTTP_HOST} ^example\.com(:80)?
RewriteRule ^(.*)$ http://blog.example/$1 [L,R=301]
3.
http://example.com/
のアクセスを
http://blog.example.com/
にするが
http://example.com/sample.html
は、そのままアクセスさせる
RewriteCond %{HTTP_HOST} ^example\.com(:80)?
RewriteCond %{REQUEST_URI} !^/sample.html?
RewriteRule ^(.*)$ http://blog.example/$1 [L,R=301]
RewriteCondの「!^/sample.html?」の「!」は否定で、sample.htmlへのアクセス以外になります
—-
うまくいかないときはログを見ましょう
ログを出すには
httpd.conf
に
RewriteLog /var/log/httpd/rewrite.log
RewriteLogLevel 9
と記載
service httpd reload
などして、Apacheに設定を読み込ませます
ログの確認が終われば、httpd.confの記載はとっておきましょう
ログが出続けてしまいます