gpt4 book ai didi

mod-rewrite - mod_rewrite 缩短 url 文件路径

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:27 25 4
gpt4 key购买 nike

我在让 mod_rewrite 执行我需要它执行的操作时遇到了一些困难。

我们在 Drupal 安装中有一组虚拟子域。因此,academics.univ.edu、about.univ.edu 等都是同一核心 Drupal 安装的一部分。

文件访问当前是 academic.univ.edu/sites/all/academics/files/myfile.jpg。然而,此路径​​也可以用作 about.univ.edu/sitse/all/about/files/myfile.jpg 或任何其他有效的子域。

我们想使用 mod_rewrite 接受 academics.univ.edu/files/myfile.jpg 并从上述位置传送文件。

这是我尝试过的:

RewriteCond %{REQUEST_URI} ^(about|academics|bursar|calendar)\.univ\.edu\/files\/(.*)$ [NC]
RewriteRule ^/sites/all/files/$1/$2 [L,NC]

我可能以错误的方式解决这个问题,但我想检查一下。我可以通过使用 HTTP_HOST 制定单独的规则来让子域工作,但我希望文件中的规则更少。此外,我无法让 HTTP_HOST 在作为子目录中的子目录存在的站点上工作。例如,undergrad.univ.edu/biology/files/myfile.jpg 应该提供/sites/all/biology/files/myfile.jpg

最佳答案

您无法匹配 %{REQUEST_URI} 中的主机,您需要使用 %{HTTP_HOST},然后使用 %1 反向引用来访问该匹配项。实际的 URI 可以在规则本身中匹配。像这样:

RewriteCond %{HTTP_HOST} ^(about|academics|bursar|calendar)\.univ\.edu$  [NC]
RewriteRule ^files/(.*)$ /sites/all/files/%1/%2 [L,NC]

%1 引用 RewriteCond 中的匹配项 (about|academics|bursar|calendar)$1 引用匹配项 (.*) 在 RewriteRule 中。因此,该示例将向 http://about.univ.edu/files/foo.html 发出请求并将请求重写为 /sites/all/files/about/foo.html

此外,如果这是在虚拟主机或服务器配置中,您需要在 RewriteRule 中的“^”和“files”之间有一个“/”。

关于mod-rewrite - mod_rewrite 缩短 url 文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8143407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com