【问题标题】:load .htaccess dynamically depending on the subdomain on multiple domain based web app根据多个基于域的 Web 应用程序上的子域动态加载 .htaccess
【发布时间】:2016-07-06 14:10:03
【问题描述】:

在我自定义构建的 PHP Web 应用程序中,我有多个域指向 /root/abc 文件夹。 IE: domain.com; mobile.domain.com, admin.domain.com 等等。

我的 CMS 设置 /root/abc 中的 index.php 文件的方式会加载不同的 index.php 文件,这些文件存储在 /root/abc/mobile/root/abc/admin 等子目录中,具体取决于子域名。

我在/root/abc/root/abc/mobile/root/abc/admin 有不同的.htacess 文件,它们分别对应于子域。

此时我想缓存来自 domain.com 和 mobile.domain.com 的文件,但缓存不适用于 admin.domain.com 和其他 subdomain.domain.com

首先,.htaccess/root/abc 上的文件加载,然后/root/abc 上的index.php 文件也加载。这在根上加载的index.php 加载了不同的文件夹,这些文件夹在子域和其他属性上与subdomain.domain.com 相关。子域名是动态的,意味着子域名和文件夹目录会发生变化。

1.. 即使我使用 HTML 元标记来清除缓存,它也不起作用。你能解释一下这种行为吗?

2..如何根据子域名动态加载.htaccess文件?

【问题讨论】:

  • 这里有一个关于HTML元标记和缓存控制的问题,stackoverflow.com/q/1341089/1741542
  • 谢谢Olaf,这对元标签很有帮助,不好的是它不适用于旧版IE。
  • 如何使用.htaccess itslef根据子域名动态加载.htaccess文件?
  • .htaccess 文件是无条件加载的,仅基于适当的目录。如果要基于域进行配置,则必须使用 IfRewriteCond 或 - 更好的是 - 使用虚拟主机配置文件。

标签: regex .htaccess mod-rewrite subdomain


【解决方案1】:

.htaccess 文件适用于其所有子目录中的目录。只有文件系统对此很重要。

即使我使用 HTML 元标记来清除缓存,它也不起作用。

用于缓存控制的元标记是 a joke,无论如何,真正的 HTTP 标头胜过它们。


避免.htaccess

如果您有权访问 httpd 主服务器配置文件,则应完全避免使用 .htaccess 文件。使用 .htaccess 文件会降低 Apache http 服务器的速度。您可以在 .htaccess 文件中包含的任何指令都最好设置在 Directory 块中,因为它具有相同的效果并具有更好的性能。

——The Apache HTTPD manual

您已在 Apache 配置中设置了子域。在 <VirtualHost> 块中设置缓存控制指令。

【讨论】:

  • 这很快,这有助于我了解 HTTPD。阅读您的答案后,我浏览了 Godaddy,发现我无权编辑相同的内容。 .htaccess 根据目录继承 .htaccess 有什么方法可以做同样的事情
猜你喜欢
  • 2019-01-16
  • 2016-01-24
  • 2016-01-21
  • 2012-06-05
  • 1970-01-01
  • 2019-02-01
  • 2016-01-12
  • 2014-05-22
  • 2020-05-12
相关资源
最近更新 更多