【问题标题】:How to access folder files located from other domain folder located inside the public-html?如何访问位于 public-html 内的其他域文件夹中的文件夹文件?
【发布时间】:2021-11-08 23:22:27
【问题描述】:

我想访问位于(例如“example.com/images/one.jpg”)的图像文件夹。 我创建了名为(例如“subdomain.example.com”)的子域。 两个域文件夹都在同一个 public_html 中。 我如何授权我的子域,它可以使用 htaccess 规则或其他任何东西访问文件。我在文件名之前厌倦了这个“../../”,但不起作用。

注意:我不想放一个完整的路径来从根域访问文件,例如 https://......

谢谢

【问题讨论】:

  • “我厌倦了文件名之前的这个“../../”” - 为什么?您之前说过“两个域文件夹都在同一个 public_html 中”。 (?)“我不想放一个完整的路径来从根域访问文件,例如 https://......” - 为什么不呢?如果“两个域文件夹都在同一个 public_html 中”,这正是您需要做的。你能澄清一下主域和子域指向的文件系统路径吗?

标签: html .htaccess subdomain cpanel


【解决方案1】:

我在 .htaccess 文件中做了一些服务器配置。我写下没有图像可以公开访问的规则。但我想授权可以访问图像 URL 的子域。
:
注意:两个域都在同一个 public_html 目录中

您似乎需要子域的例外并阻止其他主机名?

有点猜测您目前是如何做到这一点的 - 也许是使用 mod_authz_core 和 <FilesMatch> 容器?还是使用 mod_rewrite?还是 Apache <If> 表达式??

您可以使用 mod_rewrite 执行以下操作,靠近根 .htaccess 文件的顶部,以阻止对所有图像的访问,除非通过子域访问。

RewriteEngine On

# Block (403 Forbidden) all image requests unless accessed through the subdomain
RewriteCond %{HTTP_HOST} !^subdomain\.example\.com
RewriteRule \.(jpe?g|png|webp|gif)$ - [F]

现在,https://example.com/images/one.jpg 形式的请求将被阻止,但 https://subdomain.example.com/images/one.jpg 将可以访问。

我不想放一个完整的路径来从根域访问文件

但您需要使用绝对(或协议相对)URL 来访问 子域 中的文件。


更新:

我的父域“example.com”中的当前规则

RewriteCond %{HTTP_REFERER} !^https://example.com/ [NC]
RewriteRule \.(gif|jpg|jpeg|png|mp4|mov|mkv|flv|svg)$ - [F,L]

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

啊,你已经实现了一种盗链保护!在这种情况下,您似乎只需要修改第一个条件以允许来自子域的请求。例如:

RewriteCond %{HTTP_REFERER} !^https://(subdomain\.)?example.com/

允许来自example.comsubdomain.example.com 的请求。 NC 标志应该被省略。所有浏览器都会将请求中的主机名小写。

“允许”访问不需要其他规则。您不需要使用绝对 URL 来访问这些资源 - 因为这似乎不是您要阻止的内容。您只需要能够另一个主机(即子域)访问这些资源。

总结:

RewriteEngine On

# Hotlink protection
RewriteCond %{HTTP_REFERER} !^https://(subdomain\.)?example.com/
RewriteRule \.(gif|jpg|jpeg|png|mp4|mov|mkv|flv|svg)$ - [F]

# HTTP to HTTPS redirect
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

L 标志不需要与 F 标志一起使用,因为它是隐含的

^(.*)$ 是不必要的,因为没有使用反向引用。简单地拥有^ 就足够了,而且效率更高——无需实际匹配所有内容即可成功。

【讨论】:

  • 我在 .htaccess 文件中添加了这条规则,但仍然无法正常工作。
  • @ZeeshanAli 您需要更改您现有的规则,而不是简单地“添加”它。请编辑您的问题以包含完整的 .htaccess 文件,并包含您当前如何限制访问。
  • 我的父域“example.com”中的当前规则RewriteCond %{HTTP_REFERER} !^https://example.com/ [NC] RewriteRule \.(gif|jpg|jpeg|png|mp4|mov|mkv|flv|svg)$ - [F,L] RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 我应该在代码顶部添加您的代码吗?我试过但没有工作。能否请您编辑规则并在评论中附上代码?
  • @ZeeshanAli 啊,你已经实现了“防盗链”。此规则需要修改(无需添加任何额外内容)。我已经更新了我的答案。
  • 我在我的 .htaccess 文件中添加了您更新的代码,但我仍然无法使用我的 php 代码中的完整 URL 访问图像(例如 example.com/image/foo.jpg)。我希望我的父域的文件夹图像是“example.com”,可以在父域和子域中访问。我为管理门户创建了子域,以检查存储在父域文件夹中的用户图像。图片在父域中仍然可以访问并且工作正常,当有人直接在新标签中打开图片链接时,链接禁止错误也正确。
【解决方案2】:

如果您有 domain.com 和 sub.domain.com,这是两个完全不同的路径。您不能使用引用作为路径从彼此获取数据,例如'../images/foo.png'

在这种情况下,你必须把所有的路径https://www.sub.domain.com/images/foo.png。这与使用子域作为资源时需要执行的方式相同,以减少您网站中对图像和源的一般请求数量。

【讨论】:

  • “这是两条完全不同的路径”——但 OP 确实声明“两个域文件夹都在同一个 public_html 中”?
  • @MrWhite — 文件系统路径和 URL 路径不是一回事
  • @Quentin 是的,我明白了。但我现在意识到我们可能在谈论不同的目的——我指的是主机指向的文件系统路径,而不是 URL。 (尽管 URL-path 在这两种情况下也必须相同,因为这两个主机似乎指向文件系统上的同一目录。)
  • 我的父域“example.com”中的当前规则RewriteCond %{HTTP_REFERER} !^https://example.com/ [NC] RewriteRule \.(gif|jpg|jpeg|png|mp4|mov|mkv|flv|svg)$ - [F,L] RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]我应该在代码顶部添加您的代码吗?我试过但没有工作。能否请您编辑规则并在评论中附上代码?
【解决方案3】:

浏览器处理的是 URL,而不是文件系统上的路径。

听起来您已将服务器配置为仅在example.com 上可用,而在subdomain.example.com 上不可用。

因此,您需要告诉浏览器从其他主机名访问图像。

src="//example.com/images/one.jpg"

【讨论】:

  • 是的,你完全正确。我在 .htaccess 文件中做了一些服务器配置。我写下没有图像可以公开访问的规则。但我想授权可以访问图像 URL 的子域。请让我知道如何重写规则,以便子域具有访问根域文件的相同权限。注意:两个域都在同一个 public_html 目录中,但是当我尝试访问根域的图像时,它显示了访问文件的禁止错误。谢谢
  • @ZeeshanAli 那么你在.htaccess 中添加了什么规则来阻止任何图像被公开访问? (请使用此信息编辑您的问题。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-03
相关资源
最近更新 更多