Mod_Rewrite:如果未设置cookie,则为默认值

时间:2015-09-04 17:04:17

标签: regex apache .htaccess mod-rewrite cookies

我有以下重写规则。

RewriteCond %{HTTP_COOKIE} lang=([^;]+)
RewriteRule .* $1/%{unescape:%1}/index.html [L]

我想知道是否有办法获得默认值(例如' en')当' lang' cookie未设置(或为空)。这样,%1的值就是Cookie的值或者' en'。

1 个答案:

答案 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