特定のURLパターンの一致時にヘッダーを設定するためにLocationMatch
ディレクティブを使用しています:
_# 1
# Expected matches: //mysite.com/any-page-with-at-least-a-character-and-no-dot
<LocationMatch "^/[^\.]+$">
Header set X-Intelligence "STUPID"
</LocationMatch>
# 2
# Expected matches: //mysite.com/ , //mysite.com/main , //mysite.com/about
<LocationMatch "^/(|main|about)$">
Header set X-Intelligence "CLEVER"
</LocationMatch>
_
ただし、URL //mysite.com/は#2ではなく#1に一致します。これはバグですか、それとも何か問題がありますか?
#2で正規表現"^/(main|about)?$"
を使用してみましたが、それでも愛情はありませんでした。
この構成を使用することで回避できます。
<VirtualHost 127.0.0.1:80>
ServerName localhost
<Location "/">
Header set X-Intelligence "CLEVER"
</Location>
<LocationMatch "^/[^\.]+$">
Header set X-Intelligence "STUPID"
</LocationMatch>
<LocationMatch "^/(main|about)$">
Header set X-Intelligence "CLEVER"
</LocationMatch>
</VirtualHost>
このようにして、次のリクエストは期待どおりに機能します。
# curl -I -L http://127.0.0.1/ 2> /dev/null | grep X-I
X-Intelligence: CLEVER
# curl -I -L http://127.0.0.1/foo 2> /dev/null | grep X-I
X-Intelligence: STUPID
# curl -I -L http://127.0.0.1/about 2> /dev/null | grep X-I
X-Intelligence: CLEVER