htaccess将domain2.com重定向到domain1.com/special-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]

我理解前两行处理有[OR]而没有";www";部分

我理解CCD_ 2的意思是";无情况";,这似乎很重要。

我已经发现,如果最后有$1,就意味着如果有人去";domain2.com/page";它将把它们发送到等价的";domain1.com/page"-我应该不这样做,因为在我的情况下,我只是有一些额外的域,我想发送到特定的页面。这些额外的域名以前并没有作为网站存在过。

我已经了解到CCD_ 4和CCD_;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……这会不会在";重写规则"url?

感谢您的帮助!

附言:哦,我也忘了,什么是最有效的方式来强制任何/所有这些域从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。我们也可以使用.*,但^(匹配regex中的起始位置(短了1个完整字符。

我们在目标URL中添加了一个?,以确保旧URL中的任何查询字符串都被剥离。因此,例如http://domain2.com/?id=123将被重定向到[NC]0。

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

相关内容

最新更新