【问题标题】:Disallow requests to a certain domain on shared hosting?在共享主机上禁止对某个域的请求?
【发布时间】: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.htmlx8967397.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.comwww.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]

【问题讨论】:

    标签: .htaccess shared-hosting


    【解决方案1】:

    你可以使用类似下面的东西:

    RewriteEngine on
    
    
    RewriteCond %{HTTP_HOST} ^x8967397\.my-provider\.com$ [NC]
    #exclude root dirs
    RewriteCond ℅{REQUEST_URI} !^/[^/]+/?$
    #exclude homepage
    RewriteCond ℅{REQUEST_URI} !^/$
    #forbid all other requests
    RewriteRule ^.*$ - [F,L]
    

    如果您访问根目录/ 和根级别目录/foo/ 和您的域的文件,即:http://x8967397.my-provider.com/foo/,这将返回 403 禁止错误,将返回 HTTP 403 错误。

    【讨论】:

    • 究竟是什么不起作用?请更具体。
    • 对不起,我知道这不是很有帮助。首先,插入符号后有一个空格。我不确定那是否应该在那里。当我使用您的代码(没有空格)时,只有对 x8967397.my-provider.com 的请求返回 403,而 x8967397.my-provider.com/file.htmlx8967397.my-provider.com/dir_1/ 仍然可以访问。重新阅读我的问题,它可能具有误导性。我会编辑。
    • 空格是错字。我已经在我的回答中更正了。立即试用更新版本。
    • 感谢您的时间和精力。我已经从你的答案中复制了代码,只更改了域名,实际上是根域(x8967397.my-provider.com)和根域下的文件(x8967397.my-provider.com/file.html)返回 403,但是当我访问一个目录时(@987654330 @) 或目录中的文件 (x8967397.my-provider.com/dir_1/file.html),它们会正确显示。
    • 您还有其他可能与此冲突的 htaccess 文件吗?
    猜你喜欢
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 2018-02-06
    • 2018-11-29
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多