因此,我需要重写一个只有HTML的小网站,以便它可以使用多种语言。我还希望保持现有链接的可操作性,以免损害排名,以及原始文件夹布局。
我的意思是,我将使用默认语言 - lv。那么我应该有一个仅适用于.html链接的RewriteRule,并且只有在第一个和第二个斜杠之间有(lv|en|ru)
时才会这样:
http://example.com/lv/index.html
它应该被路由到index.php,然后将语言部分输出,如果缺少,它将在会话中检查默认值,如果缺少 - 使用默认值。
我能想到的是:
RewriteRule ([a-zA-Z]*)\.html $1.php
这在链接上工作正常,因为它路由到正确的页面并具有正确的属性,但它并不特定于我的语言需求,并且还尝试重新路由所有其他资源,因为它不包含回退。回退应该没有第一段,意思是语言被删除。
帮助?
答案 0 :(得分:0)
如果我理解正确,那么你就是过度工程了。您不需要引入PHP脚本。你所说的是你有三种HTML文件的语言变体,但其他扩展是所有三种语言共有的。所以让我们再试一次。我假设lv HTML存在于DOCUMENT_ROOT
层次结构中,但您将拥有英语和俄语的镜像层次结构,因此:
RewriteEngine On
RewriteBase /
# If the request is for a language subdirectory:
# anything other than HTML or
# the request is for the default lv
# then remove the language subdir
RewriteCond %{REQUEST_URI} !\.html\b
RewriteCond $1 =lv
RewriteRule ^(lv|en|ru)/(.*) $2 [L]