【发布时间】:2022-11-26 09:58:45
【问题描述】:
我在我的 cPanel 主机上有一个主域和一个网站设置,还有一个带有自己独立网站的附加域:域名.com和addon.com
由于 cPanel 配置附加域的方式,可以通过主域访问附加域的网站:
-
addon.domain.com/
-
domain.com/addon/
我想做的是阻止主域对附加域网站的所有访问,包括其中包含的任何和所有文件或文件夹,因此:
- 正在访问addon.com/anyfolder/anyfile.php有效,但是;
- 正在访问addon.domain.com/anyfolder/anyfile.php 或者
- 正在访问domain.com/addon/anyfolder/anyfile.php失败并出现 404 错误。
我在修改附加域的 htaccess 文件以实现此目的方面取得了一些成功,例如在附加域的 htaccess 中使用它:
RewriteEngine on
RedirectMatch 404 ^/addon/(.*)$
积木domain.com/addon/anyfolder/anyfile.php完美,显示 404 错误。
但是我尝试了各种方法来做同样的事情addon.domain.com虽然我通常可以让它在仅访问域时显示 404,但对于任何文件夹或文件(addon.domain.com/anyfolder/anyfile.php) 它仍然可以正常工作,我不知道如何使用 htaccess 来纠正这个问题。
例如:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^https?://(www\.)addon\.com
RewriteRule ^(.*)$ - [L,R=404]
这使得addon.domain.com显示所需的 404 错误,但是addon.domain.com/anyfolder/anyfile.php仍然可以正常工作。
这当然只是一个例子,我实际上已经搜索了一段时间并尝试了几种不同的重写条件,但没有成功获得所需的结果。另一个仅适用于域的示例:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?addon.domain.co.uk$ [NC]
RewriteRule ^(.*)$ - [L,R=404]
这又一次导致addon.domain.com显示所需的 404 错误,但是addon.domain.com/anyfolder/anyfile.php仍然有效。
我唯一能想到的另一件事是编辑主域的 DNS 区域并删除(或以某种方式破坏)子域的 A 记录。这当然会导致“找不到服务器”错误,这会产生预期的影响,但我无法想象这是一个明智的选择。
【问题讨论】:
标签: apache .htaccess redirect mod-rewrite subdomain