【发布时间】:2011-12-28 14:37:15
【问题描述】:
我有一个 Drupal 6 多站点,有 2 个域(www.example.com 和 www.domain.com),共享一些公共内容。
域 example.com 使用三种语言(EN、FR、NL)。语言由路径前缀(/en、/fr、/nl)设置。另一个域 domain.com 仅使用一种语言 (NL)。
问题:在很多情况下 domain.com 以错误的语言显示,即使没有填写路径前缀。不知何故,它似乎默认为 EN,尽管它没有不要总是那样做——行为似乎不是很一致。
解决方案(至少我希望如此):因为我不是 Drupal 开发人员(我从一位前同事那里继承了该站点)我不知道如何在 Drupal 中解决这个问题,所以我认为修复它的最佳方法是向 .htaccess 添加一些重写规则。
我也不是 htaccess/regex 专家,不能让它工作。您可以在下面找到我当前的重写规则,欢迎任何帮助或建议。
-
一些例子:
-
www.domain.com/fr/some-title需要改写为www.domain.com/nl/some-title -
www.domain.com/node/1975需要改写为www.domain.com/nl/node/1975
-
这些是已经存在的重写规则:
# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
我尝试添加这个:
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$ [NC]
RewriteRule ^/(.*)$ /nl/$1
并且希望这只是将 /nl/ 添加到所有路径(因此不是一个完整的解决方案,因为 /fr/some-title 将变为 /nl/fr/some-title) - 但是,快速测试告诉我:
-
/fr/some-title被重写为/nl/some-title(这是我需要的,但不是我所期望的) /some-title未被重写问题:有什么想法可能有问题吗?或者这可能是由其他(Drupal)设置引起的?或者有没有更好的方法来解决我的问题?
为了完整起见:直播网站是www.cinemazuid.be
【问题讨论】:
-
在 admin/settings/language 你可以设置默认语言。虽然我不知道这在多晶石上是如何工作的。你检查过这个吗?我想你添加了你的 RewriteRule before 其他的? (L表示之后不会执行其他的RewriteRules)
-
@lumbric 1) /nl 设置为默认值。 2)是的重写规则是之前以L结尾的重写规则。3)我不明白你的第二条评论:-/
-
嗯,Drupal 不尊重
Accept-Language? -
抱歉,第二次尝试:这里出了点问题。
/fr/some-title是否正确重写为/nl/some-title?但在你说它会变成/nl/fr/some-title? -
@lumbric 对不起,我的错 - 我现在看到那部分有点不清楚,我改写了一下......
标签: regex apache drupal .htaccess mod-rewrite