Apache 将任何子域url上的任何链接重定向到另一个域
我注册了一个过期的域,将所有传入的链接转发到另一个域。问题是:许多内联都放在子域上,例如: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: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
是否可以创建一个“通用”规则并将其放入主目录的htaccess中 问题2:
或者我必须为每个子域编写特定的规则吗 问题3:
我是否必须为要添加重定向规则的每个子域创建一个子目录,并在每个子目录中创建一个单独的htaccess
非常感谢您的帮助或建议。非常感谢您事先提供的帮助。这不仅仅是一个
.htaccess
问题。为了让您的服务器接收到对.example.com
的请求,需要有必要的DNS和服务器配置指令。如果请求未到达服务器,则无法在.htaccess
中实施重定向
所以,我怀疑这些子域甚至没有解析
您需要为每个主机名(即子域)逐个创建必要的DNSA
记录和ServerAlias
指令,或者创建一个“通配符”DNSA
记录(以及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]