[Apache]URLを書き換える例

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の記載はとっておきましょう
ログが出続けてしまいます

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください