Apache .htaccess从foo.com/sub重定向到bar.com/sub
我想将所有访问者从一个域的子文件夹重定向到另一个域的同一子文件夹。这应适用于所有子文件夹和文件-,但仅适用于文件夹“folder” 例如: foo.com/folder->bar.com/folder 和子结构 foo.com/folder/subfolder/file.php->bar.com/folder/subfolder/file.php 我发现的所有帖子都只涉及(子)文件夹,而不是域 谢谢Apache .htaccess从foo.com/sub重定向到bar.com/sub,apache,.htaccess,redirect,server,Apache,.htaccess,Redirect,Server,我想将所有访问者从一个域的子文件夹重定向到另一个域的同一子文件夹。这应适用于所有子文件夹和文件-,但仅适用于文件夹“folder” 例如: foo.com/folder->bar.com/folder 和子结构 foo.com/folder/subfolder/file.php->bar.com/folder/subfolder/file.php 我发现的所有帖子都只涉及(子)文件夹,而不是域 谢谢 更新:多亏了贡献者——当然我尝试过搜索,但是Drupal阻止了重定向,所以我认为我找到的答案不起
更新:多亏了贡献者——当然我尝试过搜索,但是Drupal阻止了重定向,所以我认为我找到的答案不起作用。无论如何,谢谢你的正确答案 这大概就是您想要的:
RewriteEngine on
RewriteRule ^/?(.*)$ https://example.com/$1 [END,QSA]
该规则同样适用于http服务器主机配置和动态配置文件(“.htaccess”)
如果您收到“内部服务器错误(http状态500)”,那么很可能您操作的是非常旧版本的apache http服务器。在这种情况下,您将在http服务器错误日志文件中找到关于此的提示。在这种情况下,您需要将[END]
标志替换为[L]
标志
如果您在一个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站点,以某种方式阻止重定向。奇怪的但这是另一个话题:-/谢谢!