【问题标题】:.htaccess redirect from foo.com/sub to bar.com/sub.htaccess 从 foo.com/sub 重定向到 bar.com/sub
【发布时间】:2017-11-30 08:20:15
【问题描述】:

我想将域的子文件夹中的所有访问者 htaccess 重定向到另一个域中的相同子文件夹。这应该适用于所有子文件夹和文件 - 但仅适用于文件夹 "folder"

例如:

foo.com/folder -> bar.com/folder

并带有子结构

foo.com/folder/subfolder/file.php -> bar.com/folder/subfolder/file.php

我发现的所有帖子都只涉及(子)文件夹,而不是域。

谢谢!

更新:感谢贡献者 - 我当然尝试搜索,但 Drupal 阻止了重定向,所以我认为我找到的答案不起作用。无论如何感谢您的正确答案!

【问题讨论】:

  • 这里实际上有数百万个答案展示了外部重定向到其他域或主机。

标签: apache .htaccess redirect server


【解决方案1】:

这应该大致是你要找的:

RewriteEngine on
RewriteRule ^/?(.*)$ https://example.com/$1 [END,QSA]

该规则同样适用于 http 服务器主机配置和动态配置文件(“.htaccess”)。

如果您收到“内部服务器错误(http 状态 500)”,这很可能是您运行的是非常旧版本的 apache http 服务器。在这种情况下,将在 http 服务器错误日志文件中找到关于此的提示。在这种情况下,您需要将 [END] 标志替换为 [L] 标志。

如果您将 both 域作为虚拟主机运行在单个 http 服务器上,则需要注意不要创建无休止的重写循环。在这种情况下,添加一个条件来防止这种循环:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^example\.com$
RewriteRule ^/?(.*)$ https://example.com/$1 [END,QSA]

一般提示:您应该始终喜欢将此类规则放在 http 服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess 样式文件)。众所周知,这些文件容易出错,难以调试,而且它们确实会降低服务器的速度。它们仅在您无法控制主机配置的情况下(阅读:非常便宜的托管服务提供商)或如果您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)提供它们作为最后一个选项)。


更新:

在下面的评论中,您提到您只想将此类重定向应用于请求路径中的特定子文件夹。为此,您只需修改匹配模式:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^example\.com$
RewriteRule ^/?folder/(.*)$ https://example.com/folder/$1 [END,QSA]

另一种选择是:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^example\.com$
RewriteRule ^/?(folder/.*)$ https://example.com/$1 [END,QSA]

【讨论】:

  • 非常感谢您的努力!我忘了强调,我只想转发文件夹文件夹,而不是其他子文件夹。
  • 谢谢你的回答,伙计。它本身就可以工作 - 但问题是,它是一个 drupal 站点,如果 URL 在 drupal 系统中可用,它会以某种方式阻止重定向。奇怪的!但这是另一个话题:-/ 谢谢!
猜你喜欢
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 2022-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 1970-01-01
相关资源
最近更新 更多