我有一个Rewrite块,旨在将用户重定向到反映其区域设置的URL(如果它们尚未完成)。这似乎要求我比较两个变量,我认为这在RewriteCond中有点棘手,但是必须有一种优雅地做到这一点的方法,而不是有几个不同的规则。
基本上 - 如果我在这里但不应该(因为地理围栏),请重定向到已识别的路径。
# Snip several SetEnvIf rules for the UserLocale variable used below
RewriteCond %{REQUEST_URI} ^/(us|au|uk|eu)/$
# This is where I'm having trouble.
# This following condition should evaluate whether the requested URI matches the StoreLocale
RewriteCond %{ENV:UserLocale} !%1
RewriteRule ^(.*)$ https://example.com/%{ENV:UserLocale}/ [R=302,L]
我知道combining two variables有一些语法,但我还没有在这里得到否定的测试。
答案 0 :(得分:1)
您可以使用以下规则:
RewriteCond %{ENV:UserLocale}#$1 !^([^#]+)#\1$
RewriteRule ^(us|au|uk|eu)/$ https://example.com/%{ENV:UserLocale}/ [R=302,L,NC]
这将是有效的代码:
if ( %{ENV:UserLocale} != $1 ) {
RewriteRule ^(us|au|uk|eu)/$ https://example.com/%{ENV:UserLocale}/
}