我所有的 URL 都可以附加 ?lang=xx 但我不想重写我所有的 htaccess 规则,所以我想捕获这个参数并在可用时附加。

我尝试将参数保存到变量 MYLANG 如下,但不起作用:

SetEnv MYLANG %{QUERY_STRING} ^lang=([a-zA-Z]{2})$

这是另一个没有奏效的尝试:
RewriteCond %{QUERY_STRING} ^lang=([a-zA-Z]{2})$
SetEnv MYLANG %1

另一个尝试:
RewriteCond %{QUERY_STRING} ^lang=([a-zA-Z]{2})$
RewriteRule ^ - [env=MYLANG:%1]

然后我可以在规则中使用捕获的变量:
RewriteRule ^(.*).html$ /?name=$1&lang=%{ENV:MYLANG} [NC,L]

或者
RewriteRule ^(.*).html$ /?name=$1 [NC,L,E=MYLANG]

最佳答案

我从未使用过它,但在我看来就是这样:

RewriteCond %{QUERY_STRING} ^lang=([a-zA-Z]{2})$
RewriteRule ^ - [E=MYLANG:%1]

RewriteRule ^(.*).html$ /?name=$1&lang=%{ENV:MYLANG} [NC,L]

关于.htaccess - 如何将 URL 参数存储在 htaccess 变量中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41863278/

10-12 12:18