Drupal 7 如何使i18n支持Drupal7中的文件名?

Drupal 7 如何使i18n支持Drupal7中的文件名?,drupal-7,internationalization,Drupal 7,Internationalization,因此,我有一个标准文件位于: /sites/default/files/hello.png 我可以这样访问它: http://www.example.com/sites/default/files/hello.png 但是,对于i18n,如果前缀路径也适用于这些文件,那就更好了。例如,此链接不起作用: http://www.example.com/us/sites/default/files/hello.png 但事实并非如此 所以我的问题是,如何使这些“特定于国家”的路径也适用于文件 我

因此,我有一个标准文件位于:

/sites/default/files/hello.png
我可以这样访问它:

http://www.example.com/sites/default/files/hello.png
但是,对于i18n,如果前缀路径也适用于这些文件,那就更好了。例如,此链接不起作用:

http://www.example.com/us/sites/default/files/hello.png
但事实并非如此

所以我的问题是,如何使这些“特定于国家”的路径也适用于文件


我想我可能需要在htaccess中做些什么,然后还需要创建一个模块来过滤和重定向这些路径,但这听起来太费劲了,也许我缺少了实现这一点的简单方法?

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

您的重写规则如下所示

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

如果您的站点位于子目录中,例如“drupal”,您可以这样修改重写规则

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

如果drupal$base_路径不是“/”的话,那么将得到404。您需要一种方法来保持基本路径,而不是将其专门设置为“/”。我想将其标记为“是”,但希望了解如何解决/问题?我已经删除了第一个示例中的第一个
/
,因为它不需要,但我相信这是处理子目录中drupal安装的最佳方法(即$base_path不是“/”)是我在“Updated”下添加的示例。