【问题标题】:Redirect 100+ domains to single site subdirectories将 100 多个域重定向到单个站点子目录
【发布时间】:2017-06-12 02:04:34
【问题描述】:

我有几百个域名,分布在不同的注册商。 为了便于管理,我将它们的名称服务器设置为像 above.com 这样的单一服务(它们让你可以重定向到任何地方)

我还在共享主机 (linux) 上设置了一个 wordpress 站点,其中每个域都有一些内容,遵循以下 URL 结构:

http://example.com/domain1
http://example.com/domain2
http://example.com/domain300

现在我想在有人在浏览器中输入或点击链接时完成此操作:

http:// domain1.com -> should be redirected to http://example.com/domain1
http:// domain2.com -> should be redirected to http://example.com/domain2
http:// domain300.com -> should be redirected to http://example.com/domain300

有没有办法避免单独编辑数百个域/dns 条目?

如果可以屏蔽就好了:

如果有人输入http://domain1.com,他应该被重定向到http:// example.com/domain1,但浏览器栏的网址仍然显示http://domain1.com

我擅长设计网站,但编码能力非常差。 有任何模板或现成的解决方案吗?

任何帮助将不胜感激。

编辑:

路线略有不同呢:

如果 wordpress URL 结构设置如下:

site.com/domain1.de
site.com/domain2.us 
..
site.com/domain300.com 

那么将每个域指向 site.com 并制定一些规则来根据引荐来源将流量引导到匹配的子目录/URL 结构是否更容易?

domain1.de -> gets redirected to site.com/domain1.de
domain2.us -> gets redirected to site.com/domain2.us
..
domain300.com -> gets redirected to site.com/domain300.com

更新:

我现在已将以下代码添加到 wordpress 根目录中的 .htaccess 中:

# BEGIN Stackexchange hack 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(domain[\d]+\..*)$
RewriteRule ^(.*)$ http://example.com/%1 [L,R,QSA]
</IfModule>

# END Stackexchange hack

我无法让它工作.. 重定向的域都将转到 index = example.com 而是被重定向到 example.com/domain.de

【问题讨论】:

  • 大多数不错的 DNS 管理服务会提供 API 或 SDK,允许您创建一个简单的一次性脚本来批量更新所有 300 个 DNS 条目。如果没有,那么您可以让 domain1 指向特定 IP,其他所有内容都指向 domain1,因此 domain1 中的更改将传播,您只需执行一次(即使这是一个巨大的痛苦)
  • 是的,谢谢。我尽量避免任何复杂的事情(不想搞砸……对我来说,这甚至是一个批处理脚本)。我稍微更新/编辑了原始问题。也许有了这样的 url 结构,一个更简单的解决方案是可能的。
  • 用建议的解决方案更新了原始问题。但不能让它工作。
  • [\d]+改为[\d]*,表示domain后面的数字是可选的。现在它期望domainNNN.ext
  • 哦.. 也许我对重定向的域不够清楚。没有号码。 domain1, domain2 可以代表具有任何扩展名(az,0-1)(com,net,org,de..)的任何域名 -> 它只是一堆可以以任何形式和扩展名出现的不同域.

标签: php .htaccess redirect referer


【解决方案1】:

当您在(假设)Apache 中设置您的虚拟主机时,添加以下内容:

ServerName example.com
ServerAlias domain1.com domain2.com .... domain300.com

将您拥有的每个域设置为指向example.com

您的.htaccess 可能如下:

RewriteCond %{HTTP_HOST} ^(domain[\d]+\..*)$
RewriteRule ^(.*)$ http://example.com/%1 [L,R,QSA]

将 domainX.com 重写为 example.com/domainX

由于主机的变化,需要进行硬重定向。

可以尝试通过在 JavaScript 中执行诸如 history.replaceState("domainX.com") 之类的操作来更改浏览器栏来欺骗人们,但任何打开控制台的人都可以看穿这个问题。这是因为如果可以提供来自malicioussite.com 的内容,同时让人们认为它来自example.com,那将非常非常顽皮。

【讨论】:

  • 非常感谢!关于棘手/顽皮的策略,您是对的。不打算作为域-> 将转到站点/域。但是感谢您强调这一点!
  • 如果我只是将所有域都指向 site.com,您的解决方案也可以吗? (没有虚拟主机等。)因为我只是通过 dns 服务将所有域重定向到 site.com
  • @user1769562 好吧,有点。您仍然需要设置 apache 才能知道如何为它们服务。否则,您将获得默认的“它可以工作!”消息,除非您已将其替换为默认站点。在后一种情况下,它应该可以工作。
  • 再次感谢!很抱歉再次打扰您:如果 URL 结构与更新后的原始问题中的“完全匹配”.. 它仅适用于您的 htaccess 吗?
  • 我已经更新了 .htaccess 规则 a 但包含扩展名。总的来说,这是一个正则表达式,您可以根据自己的需要进行调整。
【解决方案2】:

如果有人输入 http:// domain1 .com 他应该被重定向到 http://site .com/domain1 但浏览器栏 URL 仍然显示 http://domain1 .com

出于安全目的,这是不可能的,您只能通过在 domain1.com 中设置 iframe 来“模拟”它:

<iframe src="http://example.com/domain1" width="100%" height="100%"></iframe>

http:// domain1 .com -> 应该被重定向到 http:// site .com/domain1 http:// domain2 .com -> 应该被重定向到 http:// site .com/domain2 .. http:// domain300 .com -> 应该被重定向到 http:// site .com/domain300

我知道的唯一方法是在每个域中设置一个 301 重定向到 http://site .com/domainX

【讨论】:

  • 感谢您强调这一点!我刚刚将其发布为 above.com(和其他)提供屏蔽 URL 转发。我现在更好地理解了这些担忧
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 2012-12-09
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多