.htaccess 不带重定向的多语言站点的Htaccess别名

.htaccess 不带重定向的多语言站点的Htaccess别名,.htaccess,dns,alias,multilingual,.htaccess,Dns,Alias,Multilingual,我有一个多语言网站 example.com-英语 example.com/it/-意大利语 我需要example.it/(*)来处理example.com/it/$1上的请求,而无需重定向到example.com。只需继续使用example.it并处理example.com/it/的所有请求,如Apaches文档中所述,这些示例应该为您指明正确的方向 使用添加请求参数lang的示例: RewriteEngine On RewriteLog /var/log/apache2/rewrite_l

我有一个多语言网站

  • example.com-英语
  • example.com/it/-意大利语

我需要example.it/(*)来处理example.com/it/$1上的请求,而无需重定向到example.com。只需继续使用example.it并处理example.com/it/

的所有请求,如Apaches文档中所述,这些示例应该为您指明正确的方向

使用添加请求参数lang的示例:

RewriteEngine On
RewriteLog /var/log/apache2/rewrite_log
RewriteLogLevel 3
RewriteRule ^/(it|fr|no)/(.*)$  /$2?lang=$1  [L,QSA]
这些规则负责所有对http的请求://example.com//。。。内部重写,以便调用http://example.com/…?lang=。发送链接时,请注意仅使用相对链接

使用环境变量
LANG
的示例,该变量可以通过脚本或其他方式进行计算:

RewriteEngine On
RewriteLog /var/log/apache2/rewrite_log
RewriteLogLevel 3
RewriteRule ^/(it|fr|no)(/.*)$  $2  [L,E=LANG:$1,QSA]

请注意,我并没有运行这段代码,我只是把它写了下来,所以如果提到一些错误,您可能需要稍微修改它。还可以尝试使用RewriteLogLevel(值0-9)进行解释,这确实有助于理解重写引擎内部的情况

你所需要做的就是重写而不是重定向。您可以从url中选择“语言代码”,并将其作为附加请求参数或(更好的)环境变量传递。这里有什么问题?这些都在重写模块的优秀文档中进行了解释。你能给我举个例子吗?