【问题标题】:Why don't webroot/.htaccess rules do apply to themes?为什么 webroot/.htaccess 规则不适用于主题?
【发布时间】:2013-05-31 05:23:30
【问题描述】:

我在“app/webroot/.htaccess”文件中添加了以下内容,以便为 .css 和 .js 等资源文件启用远期过期标头。虽然这适用于 /js /css /img 文件夹中提供的任何内容,但它不适用于放置在 CakePHP 主题 webroot/js|css|img 文件夹中的任何内容。

是否应该使用类似的方法来控制来自主题的资源缓存?我所有的主题资源文件都会在第二天到期,就好像它在抓取某种默认值一样。

没有其他适用于 mod_expires 的 Apache 规则,因为我试图将其全部保存在 .htaccess 中。

<IfModule mod_expires.c>
    ExpiresActive On

    ExpiresByType text/css "access plus 1 week"

    # ... Also added png,js etc...

</IfModule>

【问题讨论】:

    标签: apache .htaccess cakephp


    【解决方案1】:

    使用 CakePHP 的默认设置,主题(和插件)资产通过 PHP 提供,而不是由 Apache 直接处理。我不是 100% 确定,但这可能会导致 htaccess 设置不被应用,因为 Apache 不会将这些文件视为“静态”文件。

    对于生产站点,建议更改设置,如此处所述Increasing performance of plugin and theme assets

    关于性能的其他提示

    作为旁注,为了提高性能;

    • 查看 Html5 Boilerplate 的服务器配置文件。它们有很好的文档记录,并提供了许多有价值的设置来加快您网站的性能。已经对这些设置进行了大量研究,因此您不必自己这样做。其中许多设置也适用于 CakePHP 网站。你可以在这里找到配置文件:https://github.com/h5bp/server-configs/tree/master/apache
    • 不要使用 .htaccess 文件,而是将 .htaccess 文件的所有规则/设置移至 VirtualHost 配置并禁用覆盖。这样,Apache 不必为每个请求扫描每个目录以查找可能的 .htaccess 文件

    【讨论】:

    • 符号链接主题 webroot js、css 和 img 文件夹解决了这个问题。以下命令将启用此功能。 cd app/weboot mkdir theme cd theme mkdir MyTheme cd MyTheme ln -s ../../../View/Themed/MyTheme/webroot/js "js" ln -s ../../../View/Themed/MyTheme/webroot/css "css" ln -s ../../../View/Themed/MyTheme/webroot/img "img" 下一步是在生产服务器上创建一个 git 合并后挂钩...
    • @carcus88 您也可以通过 vhost 文件中的 mod_alias 或 mod_rewrite 来实现此功能;如果您的虚拟主机在您的 GitHub 存储库中,那么在更新您的生产服务器后,简单的“重新加载”Apache 就可以解决问题。无论如何,很高兴你能成功!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多