如何解决htaccess 确定方法将 domain2.com 重定向到 domain1.com/specific-page
在 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's do it 命令)。
真正让我难受的是^(.*)$
我找不到任何描述来分解每个角色的作用。我会按原样使用它,除了,似乎我发现的每个示例都显示了它的许多变体,例如...
RewriteRule ^(.*)$ https://domain1.com/page [NC,L]
RewriteRule ^(.*) https://domain1.com/page [NC,L]
RewriteRule ^ https://domain1.com/page [NC,L]
RewriteRule .* https://domain1.com/page [NC,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.com
和 domain2.com
域,因为我们在开始时将 www.
部分设为可选。
我们只匹配 ^
中的 RewriteRule
,以确保我们匹配 domain2
域中的每个 URL。我们也可以使用 .*
,但 ^
(匹配正则表达式中的起始位置)要短 1 个完整字符。
我们在目标 URL 中附加一个 ?
以确保旧 URL 中的任何查询字符串都被剥离。所以例如http://domain2.com/?id=123
将被重定向到 https://domain1.com/page
。
由于我们总是重定向到修复页面 https://domain1.com/page
,因此无需捕获原始 URL 并在以后重复使用,因此无需使用 $1
等。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。