2015-06-26 117 views
7

所以我有一个标准的文件位于:如何让i18n支持Drupal 7中的文件名?

/sites/default/files/hello.png 

我可以像这样访问:

http://www.example.com/sites/default/files/hello.png 

然而,随着国际化,这将是很好,如果前缀路径也会为这些工作文件。例如,此链接不起作用:

http://www.example.com/us/sites/default/files/hello.png 

但事实并非如此。

所以我的问题是,我怎样才能使这些“国家特定的”路径也适用于文件?

我在想我可能需要在htaccess中做些什么,然后创建一个模块来过滤和重定向这些路径,但这听起来像是太多的努力,也许我错过了简单的方法来启用它?

回答

2

您可以使用htaccess将所有语言版本的URL重定向到文件/图像的默认URL。 如果你这样做,你不需要在你的drupal代码中做任何事情(例如自定义模块)。

你重写规则是这样的

RewriteEngine On 
RewriteRule ^([a-zA-Z-]*)/sites/default/files/(.*)$ sites/default/files/$2 [R=301,L] 

更新

如果您的网站是一个子目录例如'drupal',你可以这样修改你的重写规则:

RewriteRule ^drupal/([a-zA-Z-]*)/sites/default/files/(.*)$ drupal/sites/default/files/$2 [R=301,L] 
+2

如果drupal $ base_path不是“/”,那会给404。您需要一种方法来保持base_path,而不是专门将其设置为“/”。 –

+0

我想将其标记为是,但希望能够深入了解如何解决/问题? – coderama

+0

我在第一个示例中删除了第一个'/',因为它不是必需的,但我相信在子目录中处理drupal安装的最佳方式(即$ base_path不是'/')是我在下面添加的示例“更新”。 –