.htaccess仅对特定链接起作用

时间:2012-01-27 11:47:17

标签: .htaccess mod-rewrite url-rewriting

因此,我需要重写一个只有HTML的小网站,以便它可以使用多种语言。我还希望保持现有链接的可操作性,以免损害排名,以及原始文件夹布局。

我的意思是,我将使用默认语言 - lv。那么我应该有一个仅适用于.html链接的RewriteRule,并且只有在第一个和第二个斜杠之间有(lv|en|ru)时才会这样:

http://example.com/lv/index.html

它应该被路由到index.php,然后将语言部分输出,如果缺少,它将在会话中检查默认值,如果缺少 - 使用默认值。

我能想到的是:

RewriteRule ([a-zA-Z]*)\.html $1.php

这在链接上工作正常,因为它路由到正确的页面并具有正确的属性,但它并不特定于我的语言需求,并且还尝试重新路由所有其他资源,因为它不包含回退。回退应该没有第一段,意思是语言被删除。

帮助?

1 个答案:

答案 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]