将域 A 中的所有子文件夹重定向到域 B 中的相同子文件夹

Redirect all subfolders from domain A to same subfolder in domain B

我有 2 个域,需要将所有子文件夹从域 A 重定向到域 B 中的同一个子文件夹。

域 A = Wordpress
域 B = Prestashop 1.7

我需要完成的示例:

https://domainA.com/subfolder1 -> 301 -> https://domainB.com/subfolder1

域A中有很多子文件夹,所以我需要我的规则是通用的

你能给我指出正确的方向吗?

您必须编辑 wordpress 域网站的 htaccess 文件。

添加 htaccesss 代码如下。

RedirectMatch 301 ^/subfolder1/(.*)$ https://domainB.com/subfolder1/

它将被重定向https://domainA.com/subfolder1 to https://domainB.com/subfolder1

你一定要试试。我希望这会有所帮助。谢谢

我理解这个问题,您实际上想要将所有内容从一个域重定向到另一个域。可以这样做:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?domainA\.com$
RewriteRule ^ https://domainB.com%{REQUEST_URI} [QSA,R=301,END]

R=302 临时重定向开始是有意义的,只有在您对所有内容都进行了满意的整理后才将其更改为 R=301 永久重定向。这样可以防止缓存问题。

如果为主机“domainA.com”启用此类规则,则可以在分布式配置文件(“.htaccess”)中实施此类规则。不过,如果您有权访问它,您应该更喜欢使用真正的 http 服务器的主机配置。


更新: 在您的评论中,您确认您确实只想重定向“子文件夹”,而不是所有资源。我将“子文件夹”理解为具有路径组件的 URL,该路径组件具有“子文件夹”后跟“/”和之后的一些其他资源。尽管这根本不必对应于服务器端文件系统中的实际文件夹...

在那种情况下,这个变体应该可以工作:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?domainA\.com$
RewriteRule ^/?[^/]+/ https://domainB.com%{REQUEST_URI} [QSA,R=301,END]

显然与上面相同的提示适用...

只是一个替代解决方案....

it points to two different filesystems.

在这种情况下,您不需要额外的 条件 来检查所请求的主机名。 (除非您在此帐户上托管 其他 个域?)

为了检测请求的 URL-path 是否包含初始子文件夹,您可以检查 URL-path 是否包含斜杠 (/),而不是而不是显式匹配第一个路径段,因为 substitution 字符串中没有使用它。

例如:

RewriteEngine on
RewriteRule / https://domainB.com%{REQUEST_URI} [R=301,L]

.htaccess中(目录上下文)与RewriteRule模式匹配的URL路径 不以斜杠开头,因此如果斜杠出现在 URL 路径中的任何位置,我们可以假设必须有一个“子文件夹”。或者,有 path-info,但由于这是一个 WordPress 站点(并且我假设您使用的是“漂亮的永久链接”,否则现有的答案也不会起作用)那么您不在任何合法 URL 上都没有路径信息。

此重定向需要靠近 .htaccess 文件的顶部, # BEGIN WordPress 部分之前。