8

我有一个网站“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]  

如何避免显示第一页?

4

3 回答 3

12

如果您想使用 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 引用第一个VirtualHost并返回 403 Forbidden 状态.

于 2012-12-14T17:48:58.810 回答
0

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>
于 2012-12-14T05:05:29.270 回答
-5

我不能特别说 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.";
}

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

于 2012-12-14T05:46:07.933 回答