Regex Mod_Rewrite:未设置cookie时的默认值
我有下面的重写规则Regex Mod_Rewrite:未设置cookie时的默认值,regex,apache,.htaccess,mod-rewrite,cookies,Regex,Apache,.htaccess,Mod Rewrite,Cookies,我有下面的重写规则 RewriteCond %{HTTP_COOKIE} lang=([^;]+) RewriteRule .* $1/%{unescape:%1}/index.html [L] 我想知道当“lang”cookie未设置(或为空)时,是否有方法获取默认值(如“en”)。这样,%1的值将是cookie的值或“en”。您可以使用如下技巧规则来获取默认值: RewriteCond %{HTTP_COOKIE}##en lang=([^;]+)|##(en) [NC] RewriteR
RewriteCond %{HTTP_COOKIE} lang=([^;]+)
RewriteRule .* $1/%{unescape:%1}/index.html [L]
我想知道当“lang”cookie未设置(或为空)时,是否有方法获取默认值(如“en”)。这样,%1的值将是cookie的值或“en”。您可以使用如下技巧规则来获取默认值:
RewriteCond %{HTTP_COOKIE}##en lang=([^;]+)|##(en) [NC]
RewriteRule (.*) $1/%{unescape:%1%2}/index.html [L]
由于使用正则表达式替换,只会填充一个反向引用
%1
或%2
,即如果lang=([^;]+)
模式匹配cookies,则将设置%1
,并且%2
将为空。如果lang
cookie不可用,则%1
将为空,但%2
将被设置为en
谢谢!我似乎找不到有关“##”用法的文档。想解释一下吗?哦,##
可以是任意的定界符。它很可能是:RewriteCond%{HTTP_COOKIE}:::en lang=([^;]+)|:::(en)[NC]
。哦,太棒了!