【发布时间】:2021-03-29 23:27:40
【问题描述】:
在 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 “让我们做吧命令)。
真正难倒我的是^(.*)$
我还没有找到任何描述来分解每个角色的作用。我会按原样使用它,但似乎我发现的每个示例都显示了它的许多变体,例如...
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 的最有效方法是什么?
【问题讨论】:
标签: wordpress .htaccess redirect mod-rewrite