【问题标题】:How to make i18n support filenames in Drupal 7?如何使 i18n 在 Drupal 7 中支持文件名?
【发布时间】:2015-06-26 10:50:16
【问题描述】:

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

/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 中做一些事情,然后还创建一个过滤和重定向这些路径的模块,但这听起来太费劲了,也许我错过了启用此功能的简单方法?

【问题讨论】:

    标签: drupal-7 internationalization


    【解决方案1】:

    您可以使用 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]
    

    【讨论】:

    • 如果 drupal $base_path 不是“/”,那将给出 404。您需要一种方法来保留 base_path 而不是将其专门设置为“/”。
    • 我想将此标记为是,但希望了解如何解决 / 问题?
    • 我在第一个示例中删除了第一个 /,因为它不是必需的,但我相信处理子目录中的 drupal 安装的最佳方法(即 $base_path 不是 '/' ) 是我在“更新”下添加的示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多