如何在Drupal 7中制作i18n支持文件名?

cod*_*ama 7 internationalization drupal-7

所以我有一个标准文件位于:

/sites/default/files/hello.png
Run Code Online (Sandbox Code Playgroud)

我可以像这样访问它:

http://www.example.com/sites/default/files/hello.png
Run Code Online (Sandbox Code Playgroud)

但是,使用i18n,如果前缀路径也可以用于这些文件,那将是很好的.例如,此链接不起作用:

http://www.example.com/us/sites/default/files/hello.png
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.

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

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

Sco*_*son 2

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

你的重写规则看起来像这样

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

更新

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

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

  • 如果 drupal $base_path 不是“/”,则会返回 404。您需要一种方法来保留 base_path 并且不将其专门设置为“/”。 (2认同)