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



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

我正在寻找 htaccess 中的 301 重定向规则,该规则将任何 url(无论是主域还是子域)转发到"new-url.tld">

axa-art.cdn.contento-v41.eu
axa-art.cdn.contento-v41.eu/slug
any-subdomain.contento-v41.eu
any-subdomain.contento-v41.eu/slug

上面所有这些例子都应该 转发到这个确切的网址:new-domain.tld

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

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

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

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

这不仅仅是一个.htaccess问题。为了使您的服务器能够接收<any-subdomain>.example.com请求,需要制定必要的 DNS 和服务器配置指令。如果请求未到达您的服务器,则无法在.htaccess中实现重定向。

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

您需要为每个主机名(即子域)逐个创建必要的 DNSA记录和ServerAlias指令,或者创建"通配符"DNSA记录(以及 vHost 中的ServerAlias *.example.com指令)。但是,如果您需要从HTTPS重定向,则这些主机名仍被SSL证书覆盖。

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

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

RewriteEngine On
RewriteCond %{HTTP_HOST} !^new.example$
RewriteRule ^ https://new.example%{REQUEST_URI} [R=301,L]

以上状态...对于任何不是new.example的请求,则 301 重定向到https://new.example/<same-url>.

但是,如果您有权访问服务器配置,并且此其他域在其自己的 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_URI服务器变量包含 URL 路径,它从不包含方案 + 主机名。因此,您发布的RewriteCond指令将始终成功。

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

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

>UPDATE#2:工作正常,但传入链接仍然没有转发,因为url中的"%":https://axa-art.cdn.contento-v41.eu/axa-art%2F0eee9cec-58cb-45b2-a4e2-b5f73920068e_091216_axa+art_classic+car+study_de_rz.pdf

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

要允许在 URL 中使用编码斜杠,您需要在服务器配置(或虚拟主机容器)中设置AllowEncodedSlashes On。您无法在.htaccess中设置此项。(服务器生成的 404 甚至在处理.htaccess之前发生。

但是,我会对启用此功能表示谨慎。(这里有具体要求吗?您是否在新服务器上重新创建这些文档?

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

如果启用AllowEncodedSlashes则上述RewriteRule会将请求重定向到/axa-art/0eee9cec....pdf- 请注意生成的 URL 中的解码百分比/。您需要采取其他步骤来维护URL编码(如果需要),但正如我所说,这看起来是一个错误。

相关内容

最新更新