我有一个 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 都可能已被缓存。