wordpress - htaccess 将domain2.com重定向到domain1.com/specific-page的 final方法

标签 wordpress .htaccess redirect mod-rewrite

htaccess 文件中将“domain2.com”和“www.domain2.com”映射/路由/重定向到特定 WordPress 页面的明确、防弹、坚如磐石、最佳实践、方法是什么? domain1.com/page”?

我已经搜索并阅读了很多内容,但似乎找不到黄金标准。似乎有很多变化,而且我无法弄清楚所有这些细节的含义足以知道我应该包括哪些以及最好排除哪些。

例如...

RewriteCond %{HTTP_HOST} ^domain2.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain2.com [NC]
RewriteRule ^(.*)$ https://domain1.com/$1 [NC,R=301,L]

我知道前两行负责with [OR] without“www”部分。

我理解 [NC] 的意思是“无大小写”,这似乎很重要。

我发现,通过在末尾添加 $1 ,意味着如果有人访问“domain2.com/page”,它会将他们发送到等效的“domain1.com/page” “- 我应该不这样做,因为就我而言,我只是有一些额外的域,我想发送到特定页面。这些额外的域以前并不作为网站存在。

我了解到最后的 [L][R=301] 是必要的,因为“301”是重定向类型,并且“L”是告诉它执行的东西(“L”et 是 do it 命令)。

真正难倒我的部分是^(.*)$ 我找不到任何详细说明每个角色的作用。我本来会按原样使用它,但似乎我发现的每个示例都显示了它的许多变体,例如......

RewriteRule ^(.*)$ https://domain1.com/page [NC,R=301,L]
RewriteRule ^(.*)  https://domain1.com/page [NC,R=301,L]
RewriteRule ^      https://domain1.com/page [NC,R=301,L]
RewriteRule .*     https://domain1.com/page [NC,R=301,L]

...等等

然后,让我真正失望的是,有一个例子说末尾有一个问号以防止循环......

RewriteRule ^ https://www.newdomain.com/page/? [R=301,L]

我也对将此代码包含在...中的一些示例感到困惑

<IfModule mod_rewrite.c>...</IfModule>

...而其他人则没有。哪个是正确的?

最后,我看到一篇文章表明您可以将这两行组合起来......

RewriteCond %{HTTP_HOST} ^domain2.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain2.com [NC]

...进入...

RewriteCond %{HTTP_HOST} ^(?:www\.)?domain2\.com$ [NC]

...正确吗?

最后的旁注 - Wordpress 页面的 url 中没有文件扩展名(我喜欢),例如... domain1.com/page ...代替... domain1.com/page.html ...这会对“RewriteRule”网址造成影响吗?

感谢您的任何/所有帮助!

PS:哦,我也忘了,强制任何/所有这些域从 http 到 https 的最有效方法是什么?

最佳答案

根据您的要求,遵循最低指令规则应该有效:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.com$ [NC]
RewriteRule ^ https://domain1.com/page? [R=301,L]

# http -> https redirect
RewriteCond %{HTTPS} !on
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301]

我们使用模式为 ^(www\.)?domain2\.com$ 因为它会匹配 ^www.domain2.comdomain2 .com 域,因为我们在开始时将 www. 部分设置为可选。

我们仅匹配 RewriteRule 中的 ^,以确保匹配 domain2 域中的每个 URL。我们也可以使用 .*,但 ^ (匹配正则表达式中的起始位置)短 1 个完整字符。

我们在目标 URL 中附加一个 ? 以确保旧 URL 中的任何查询字符串都被删除。所以例如http://domain2.com/?id=123 将被重定向到 https://domain1.com/page

由于我们始终重定向到修复页面 https://domain1.com/page,因此无需捕获原始 URL 并在以后重用它,因此无需使用 $1 等等

关于wordpress - htaccess 将domain2.com重定向到domain1.com/specific-page的 final方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66862928/

相关文章:

php - 仅针对 Woocommerce 中的特定订单状态和付款方式减少库存

php - 根据 wordpress 中的 meta_value 对 POST 进行排名 [示例 : "Ranked 3 out of 12 post"]

regex - htaccess 和 URL 中的符号

apache - htaccess - 删除 .php 扩展名并保留变量

javascript - 如何检测IE11并将其重定向到其他网站

mysql - 如何在安装 bitnami wordpress 时指定 xampp mysql 端口号?

javascript - nivo slider 和光滑的轮播不能一起工作的问题 -- jquery

security - 通过 HTTP 强制使用 HTTPS

php - 从 CodeIgniter 中删除并重定向 index.php

html - WWW 和非 WWW URL。两个不同的站点