更改了域名,现在有 2 个,如何使用 htaccess 重定向到首选域名?

更改了域名,现在有 2 个,如何使用 htaccess 重定向到首选域名?

我有一个 WordPress 网站和一个/forums子目录上的 PHPBB 论坛。

我在 Apache 中为网站添加了一个新域名。添加域名后,所有内容都可以在两个域名上加载。

然后我修改了 WP-config 文件中的地址,WP 现在会自动 301 重定向到新域名(是的,这是一件事)。

到目前为止一切顺利。/forums/仍然在新旧域名上加载。考虑到新旧域名都添加到同一个服务器安装中,我该如何重定向此子目录?因此,当您访问任何域名时,都会访问同一个文件.htaccess

所以我需要像重定向这样的东西仅有的/forums/并且只有当旧域名访问新域名时才有效。这可能吗?

我不能从网站中删除旧域名,否则它就无法解析。我想我可以创建一个新网站来重定向,但这似乎没有必要。

编辑:我的尝试(无效)

RewriteEngine on
RewriteCond %{HTTP_HOST} ^old-domain.com
RewriteCond %{REQUEST_URI} ^/forums/(.*)$
RewriteRule ^(.*)$ https://new-domain.com/forums/$1 [L,R=301]

答案1

因此,需要澄清的是,您想要重定向old-domain.com/forums/<anything>new-domain.com/forums/<anything>

RewriteCond %{HTTP_HOST} ^old-domain.com
RewriteCond %{REQUEST_URI} ^/forums/(.*)$
RewriteRule ^(.*)$ https://new-domain.com/forums/$1 [L,R=301]

这将重定向到https://new-domain.com/forums/forums/<whatever>,因为$1反向引用包含整个 URL 路径(从RewriteRule 图案,而不是条件模式)您可以简单地forums/RewriteRule 代换然而,前面的状况不需要检查REQUEST_URI,并且可以整理。

请尝试在文件顶部.htaccess、任何现有 WordPress 指令之前执行以下操作:

RewriteCond %{HTTP_HOST} ^old-domain\.com [NC]
RewriteRule ^(forums/.*) https://new-domain.com/$1 [R=302,L]

不需要附加条件,因为 URL 路径可以通过以下方式匹配:RewriteRule 图案而是(更有效率)。

反向$1引用包含以 开头的整个 URL 路径forums/

请注意,这是一个 302(临时)重定向 - 仅当您确定它正常工作时才将其更改为 301(永久) - 以避免缓存问题。

您需要清除浏览器缓存,因为任何错误的 301 都可能已被缓存。

相关内容