【问题标题】:htaccess - Deny requests from unauthorized domainshtaccess - 拒绝来自未授权域的请求
【发布时间】:2012-12-14 04:56:49
【问题描述】:

我有一个网站“www.mysite.com”,它有自己的 IP。现在几个月以来,我看到几个域指向我的 ip 服务器(它不是共享 ip)。我可以使用那些未经授权的域浏览整个网站,它们会在谷歌中被我的内容和所有内容编入索引。

如何将我的 htaccess 设置为仅允许对“www.mysite.com”的请求?

更新

这是迄今为止我编写的带有建议的 .htaccess,但不知何故,第一页仍然提供,没有图像

.htaccess

SetEnvIfNoCase Referer "^http://(www.)?thiefdomain.com" spam_ref  
SetEnvIfNoCase Referer "^http://(www.)?thiefdomain2.com" spam_ref2


<FilesMatch "(.*)">  
    Order Allow,Deny  
    Allow from all  
    Deny from env=spam_ref  
    Deny from env=spam_ref2  
</FilesMatch>  

RewriteEngine On  
RewriteCond %{REQUEST_FILENAME} -s [OR]  
RewriteCond %{REQUEST_FILENAME} -l [OR]  
RewriteCond %{REQUEST_FILENAME} -d  
RewriteRule ^.*$ - [NC,L]  
RewriteRule ^.*$ index.php [NC,L]  

如何避免显示第一页?

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    如果您想使用 mod_rewrite,您可以检查 SERVER_NAME 以阻止未经授权的域:

    RewriteEngine on
    RewriteCond %{SERVER_NAME} ^(www\.)?thiefdomain1\.example$ [OR]
    RewriteCond %{SERVER_NAME} ^(www\.)?thiefdomain2\.example$ [OR]
    RewriteCond %{SERVER_NAME} ^(www\.)?thiefdomain3\.example$
    RewriteRule ^ - [F]
    

    RewriteEngine on
    RewriteCond %{SERVER_NAME} !^(www\.)?yourdomain\.example$
    RewriteCond %{SERVER_NAME} !^(www\.)?yourdomain-alias\.example$
    RewriteRule ^ - [F]
    

    如果你有root权限,你也可以解决基于名称的虚拟主机的问题,如下:

    NameVirtualHost *:80
    
    <VirtualHost 192.0.2.100:80>
      ServerName dummy
      <Location />
        Order deny,allow
        Deny from all
      </Location>
      ...
    </VirtualHost>
    
    <VirtualHost 192.0.2.100:80>
      ServerName www.yourdomain.example
      ServerAlias yourdomain.example
      ...
    </VirtualHost>
    

    第一个VirtualHost 定义被视为默认虚拟主机。如果 192.0.2.100 作为 thiefdomain1.example、thiefdomain2.example、thiefdomain3.example 或除 www.yourdomain.example 或 yourdomain.example 之外的任何其他主机名(在第二个 VirtualHost 中定义)访问,Apache 引用第一个 @987654327 @ 并返回 403 禁止状态。

    【讨论】:

    • 这些会影响 html 链接标签吗?例如,如果其他站点有&lt;a href="mysite.com"&gt;Link&lt;/a&gt;,上述代码会阻止对它们的访问吗?
    • 非常感谢!发现另一个域几乎窃取了我的网站并将其显示在他的域中。
    • 你是英雄!!
    【解决方案2】:

    1) 你的窃贼来自哪些 IP?你能屏蔽这些 IP 吗?

    2) 您是否曾向 Google 举报他们窃取内容(如果您能证明您是所有者)?

    3) 您是否已将此情况报告给域名托管服务商? (例如 GoDaddy)

    4) 您还可以重写您的 HTML,使其成为绝对路径而不是相对路径:

    例如,相对路径如下所示:

    < a href="/page/2.html">page 2</a>
    

    绝对路径将包括您的网站地址:

    <a href="http://www.site.com/page/2.html">page 2</a>
    

    【讨论】:

    • 1) 没有要阻止的 ip,他们只是将他们的域与我的 ip 相关联 2) 我已经报告了,但是他们更改了域,我必须重新开始 4) 我可以,但是它将我的所有应用程序链接更改为绝对链接会非常痛苦,而且它不会解决主页的问题
    • 如果引用的 IP 或域不是您的,您能否在页面中添加代码以执行 301 重定向到您的域? phpjunkyard.com/tutorials/php-redirect.php
    • 这行得通,但我想知道是否有办法使用 Apache 来实现这一点,这让我想知道如果我的网站是纯 HTML 格式,我怎么能做到这一点
    • 谢谢,我已经根据自己的需要对其进行了调整,并且可以正常工作,但仍会显示第一页。用代码更新了我的问题
    【解决方案3】:

    我不能特别针对 htaccess 说。但通过编程,你可以做到这一点。 比如说,您的域是 www.mydomain.com。假设浏览器正在请求您网站的 about-me 部分。您可以执行以下操作。我正在展示 PHP(因为我对 php 了解甚少)。

    <?php
    if($_SERVER['HTTP_HOST'] == "your domain")
    {
    //show content
    }
    else
    {
    echo "your are not authorized to view contents from here.";
    }
    

    如果您更喜欢其他语言,他们可能会通过自己的方式获取主机名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 2016-08-29
      • 2017-02-04
      • 2019-07-17
      相关资源
      最近更新 更多