Apache 将任何子域url上的任何链接重定向到另一个域

Apache 将任何子域url上的任何链接重定向到另一个域,apache,.htaccess,redirect,subdomain,Apache,.htaccess,Redirect,Subdomain,我注册了一个过期的域,将所有传入的链接转发到另一个域。问题是:许多内联都放在子域上,例如:axa art.cdn.contento-v41.eu/axa art/0eee9cec-58cb-45b2-a4e2-B5F7392068E_091216_axa+art_classic+car+study_de_rz.pdf 我在htaccess中寻找一个301重定向规则,它可以将任何url(无论在主域还是子域)转发到“newURL.tld” 以上所有示例都应该 转发到此准确的URL:new-domai

我注册了一个过期的域,将所有传入的链接转发到另一个域。问题是:许多内联都放在子域上,例如:axa art.cdn.contento-v41.eu/axa art/0eee9cec-58cb-45b2-a4e2-B5F7392068E_091216_axa+art_classic+car+study_de_rz.pdf

我在htaccess中寻找一个301重定向规则,它可以将任何url(无论在主域还是子域)转发到“newURL.tld”

以上所有示例都应该 转发到此准确的URL:new-domain.tld

问题1:
是否可以创建一个“通用”规则并将其放入主目录的htaccess中

问题2:
或者我必须为每个子域编写特定的规则吗

问题3:
我是否必须为要添加重定向规则的每个子域创建一个子目录,并在每个子目录中创建一个单独的htaccess


非常感谢您的帮助或建议。非常感谢您事先提供的帮助。

这不仅仅是一个
.htaccess
问题。为了让您的服务器接收到对
.example.com
的请求,需要有必要的DNS和服务器配置指令。如果请求未到达服务器,则无法在
.htaccess
中实施重定向

所以,我怀疑这些子域甚至没有解析

您需要为每个主机名(即子域)逐个创建必要的DNS
A
记录和
ServerAlias
指令,或者创建一个“通配符”DNS
A
记录(以及vHost中的
ServerAlias*.example.com
指令)。但是,如果需要从HTTPS重定向,那么这些主机名仍然存在SSL证书覆盖的问题

然后,您可以在
.htaccess
中创建必要的重定向。尽管如此,由于您需要访问服务器配置(或使用为您执行此操作的控制面板)来实现上述指令,因此您也应该在服务器配置中实现此重定向

例如,在
.htaccess
文件的顶部,在现有指令之前(或在vHost中):

上述国家。。。对于任何不适用于
新建的请求。例如
则301重定向到
https://new.example/

但是,如果您可以访问服务器配置,并且该其他域在其自己的vHost容器中配置,则可以简化重定向:

Redirect 301 / https://new.example/

更新#1:

此规则不会将任何URL从主域转发到新域

# Permanent URL redirect- by netgrade
RewriteEngine on
RewriteCond %{REQUEST_URI} !https://www.marco-mahling.de/$
RewriteRule $ https://www.marco-mahling.de/ [R=302,L]
我上面发布的规则可能会完全取代您现有的规则

是的,您的规则确实会将每个URL重定向到新域的根目录,但可以说是不正确的。
RewriteCond
指令是超级指令,实际上没有做任何事情。
REQUEST\u URI
服务器变量包含URL路径,它从不包含scheme+主机名。因此,您发布的
RewriteCond
指令将始终成功

如果这是您当前拥有的规则,那么它将已经重定向所有内容。在这种情况下,您的问题似乎与上述必要的DNS和服务器配置指令有关

根据您的指令,我假设另一个域实际上指向不同的服务器(或同一服务器上的不同vHost)。否则,这将导致重定向循环。在这种情况下,您只需要我上面发布的更简单的
重定向
指令


更新#2:工作正常,但由于
url
中有“%”的原因,传入的链接仍然没有转发:
https://axa-art.cdn.contento-v41.eu/axa-art%2F0eee9cec-58cb-45b2-a4e2-B5F739206068E_091216_axa+艺术+经典+汽车+学习_de_rz.pdf

这实际上是因为
%2F
——URL路径中的编码斜杠(
/
)。默认情况下,Apache将使用404拒绝此类URL(出于安全原因)

要允许URL中使用编码斜杠,您需要在服务器配置(或vHost容器)中设置
allowencodedslash On
。您不能在
.htaccess
中设置此项。(服务器生成的404甚至出现在
处理.htaccess
之前。)

但是,我要对启用此功能表示谨慎。(此处是否有特定要求?是否在新服务器上重新创建这些文档?)

如果此请求旨在直接映射到磁盘上的PDF文件,那么这实际上看起来像是错误的URL编码请求,因为斜杠
/
在Windows或Linux上都不是允许的文件名字符


如果启用
allowencodedslash
,则上述
重写规则将把请求重定向到
/axa art/0eee9cec….pdf
-注意结果URL中的%-decoded
/
。您需要采取额外的步骤来维护URL编码(如果需要的话),但正如我所说,这看起来是一个错误。

这还不清楚,请添加您的htaccess文件以及URL示例,以便更好地理解您的问题。谢谢。我不确定我的htaccess文件如何帮助您,因为我不知道要添加什么规则。但我已经附上了它。此规则不会将任何URL从主域转发到新域。但对于“子域困境”,我还没有一个具体的规则。#永久URL重定向-由netgrade RewriteEngine在RewriteCond%{REQUEST_URI}上执行!重写规则$[R=302,L]为什么我要求在你的问题中添加htaccess文件,因为鼓励原创海报添加他们的努力。您可以编辑问题并添加它。也可以看到这个链接,你可以发布一个好的问题和样本,这将有助于我们更好地理解你的问题,干杯。给我一点时间。看看我如何解释和编辑我的问题更容易一点。你好,怀特先生
Redirect 301 / https://new.example/
# Permanent URL redirect- by netgrade
RewriteEngine on
RewriteCond %{REQUEST_URI} !https://www.marco-mahling.de/$
RewriteRule $ https://www.marco-mahling.de/ [R=302,L]