Mod rewrite 将en.example.com重定向到example.com/index.php?language=en

Mod rewrite 将en.example.com重定向到example.com/index.php?language=en,mod-rewrite,multilingual,lighttpd,Mod Rewrite,Multilingual,Lighttpd,我希望重定向以以下开头的地址: en.example.com/somefile.php 致: 在lighttpd中使用mod_重写模块。直到现在我才明白: $HTTP["host"] =~ "^en\.(.*)\.com$" { url.rewrite-once = ( "^/(.*)" => "/$1?language=en" ) } 但这似乎不起作用。如何

我希望重定向以以下开头的地址:

en.example.com/somefile.php
致:

在lighttpd中使用mod_重写模块。直到现在我才明白:

$HTTP["host"] =~ "^en\.(.*)\.com$" {
        url.rewrite-once = (
                "^/(.*)"
                =>
                "/$1?language=en"
        )
}

但这似乎不起作用。如何使这项工作正常进行?

请尝试以下操作。。如果对你有用的话

$HTTP[“host”]=~“^en.([^.]+.com[a-z0-9-]+.php)$”{ url.rewrite-one=( "^/(.*)" => “/$1?语言=英语” ) }试试这个:

$HTTP["host"] =~ "^en\.([^/.]+)\.com$" {
    url.rewrite-once = (
        "^/([^?]*)(\?(.*))?" => "http://%1/$1?language=en&$3"
    )
}
试试这个

$HTTP["host"] !~ "^(en|fr)\.([^.]+\.com)$ {
    url.rewrite-once = (
      "^/(.*)" => "http://%2/$1&language=%1" 
    )
  }
这应该重写子域。和/或fr.到URL字符串完整的任何域(包括TLD),并附加语言参数

示例:

http://en.example.com            -> http://example.com/&language=en
http://fr.example.com/directory/ -> http://example.com/directory/&language=fr

为什么不使用PHP(
$\u SERVER['HTTP\u host']
)从HTTP主机提取语言?@Gumbo-没有不同的子域,搜索引擎不会发现此站点上有更多的语言。@tomasz:不如像
http://example.com/en/…
?不要忘记在HTTP和HTML中正确的语言声明。
&language=en
in
http://example.com/&language=en
是URL路径的一部分,而不是URL查询的一部分。True。您可以使用“?”代替“&”,但如果URL已经有参数,则会中断。示例:
http://en.example.com/?param1=12345 -> http://example.com/?param1=12345?language=en
您是否已经需要处理带有查询字符串参数的URL?
http://en.example.com            -> http://example.com/&language=en
http://fr.example.com/directory/ -> http://example.com/directory/&language=fr