我有以下重写规则。
RewriteCond %{HTTP_COOKIE} lang=([^;]+)
RewriteRule .* $1/%{unescape:%1}/index.html [L]
我想知道是否有办法获得默认值(例如' en')当' lang' cookie未设置(或为空)。这样,%1的值就是Cookie的值或者' en'。
答案 0 :(得分:3)
您可以使用这样的技巧规则来获取默认值:
RewriteCond %{HTTP_COOKIE}##en lang=([^;]+)|##(en) [NC]
RewriteRule (.*) $1/%{unescape:%1%2}/index.html [L]
由于使用正则表达式替换,只会填充一个反向引用%1
或%2
,即如果lang=([^;]+)
模式与Cookie匹配,则%1
将被设置, %2
将为空。如果lang
Cookie不可用,则%1
将为空,但%2
将设置为en
。