2

如何使用 .htaccess 将来自特定域名的所有请求重写到我的站点?

例如,如果http://www.example.com有指向我网站的链接,那么我想将它们重定向到我网站上的不同页面,但来自其他网站的其他链接和直接链接应该像正常一样显示请求的页面。

我一直在搞不清楚如何做到这一点......提前致谢!

更新:

答案中要求的一些信息:

我精简的 .htaccess 文件如下所示:

# irrelevant all squashed together (issue still remains when used like this)
 <Files .htaccess>
  order allow,deny
  deny from all
 </Files>
Options +FollowSymLinks
RewriteEngine On
RewriteOptions MaxRedirects=10
DirectoryIndex index.php
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301]
ErrorDocument 400 /error.html
ErrorDocument 401 /error.html
ErrorDocument 403 /error.html
ErrorDocument 404 /error.html
ErrorDocument 500 /error.html
Options All -Indexes
IndexIgnore *
LimitRequestBody 10240000

#redirect
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?badsite\.com/ [NC] 
 RewriteRule !^error\.html /error.html [L,NC,R=302]

我正在访问的页面的标题如下所示:

Referer: http://www.badsite.com/wiki/Page

第二次更新:

预期的行动是:

  1. 访问http://www.example.com/wiki/Page
  2. 点击链接到http://www.mysite.co.uk/thispage/here
  3. 由于example.com,我应该被重定向到http://www.mysite.co.uk/badpage而不是http://www.mysite.co.uk/thispage/here像所有其他请求一样。
4

1 回答 1

1

为此,您将需要依赖 HTTP_REFERER。将此代码放在子目录的.htaccess文件中:

RewriteEngine On

RewriteCond %{QUERY_STRING} !^id=[^&]+ [NC]
# if referrer is bad.com
RewriteCond %{HTTP_REFERER} (www\.)?bad\.com [NC]
# then redirect to a different page
RewriteRule !^start start [L,NC,R=302]

尽管请记住,这HTTP_REFERER可以被欺骗并且不是 100% 可靠的。

PS:由于安装了dokuwiki,结果证明是独特的情况

于 2013-11-04T17:40:47.537 回答