【发布时间】:2019-05-10 13:33:24
【问题描述】:
我的几个网站托管在共享服务器上。我的网络空间的文件夹结构和域分配如下所示:
directory assigned domain
-------------------------------------
/ x8967397.my-provider.com (default domain)
/dir_1/ www.my-first-domain.com = x8967397.my-provider.com/dir_1/
/dir_2/ www.my-second-domain.com = x8967397.my-provider.com/dir_2/
x8967397.my-provider.com 域是我的托管计划附带的默认域。它始终指向我的网站空间的根目录,不能关闭或设置到另一个文件夹。结果是可以通过请求x8967397.my-provider.com/dir_1/来访问URL为www.my-first-domain.com的网站。也就是说,两个 URL 都向访问者显示同一个网站。
我想阻止对默认域 (x8967397.my-provider.com) 的访问,包括所有文件和目录(例如 x8967397.my-provider.com/file.html 和 x8967397.my-provider.com/dir_1/),而不阻止其他域(例如 www.my-first-domain.com),但是不要不知道怎么做。如果我使用Deny from all 阻止对 htaccess 中根文件夹的访问,则所有域都无法访问。
如何告诉我的网络服务器禁止对某个域的请求,在这种情况下是默认域?
基本上是这样的:
<URL "x8967397.my-provider.com">
Deny from all
</URL>
编辑
文件夹/dir_1/ 和dir_2 中有.htaccess 文件,它们是自定义域www.my-first-domain.com 和www.my-second-domain.com 的根文件夹。以下是其中之一的 .htaccess 文件中的重写规则:
RewriteEngine On
RewriteBase /
RewriteRule ^images/background\.png$ includes/adaptive-images.php
# redirects non-www to www
RewriteCond %{HTTP_HOST} ^my-first.domain\.com [NC]
RewriteRule (.*) http://www.my-first-domain.com/$1 [R=301,L]
# redirects /index.php to /
RewriteCond %{IS_SUBREQ} false
RewriteRule ^index\.php$ http://www.my-first-domain.com/ [R=301,L]
# redirects missing files and directories to home (instead of error document)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://www.my-first-domain.com/ [R=301,L]
【问题讨论】: