【问题标题】:Redirect all domains of .com to .org on a wordpress site将 .com 的所有域重定向到 wordpress 站点上的 .org
【发布时间】:2020-10-30 12:45:25
【问题描述】:

我需要有关站点重定向的帮助,我有 2 个域:mywebsite.com 和 mywebsite.org,它们都指向同一个站点 (wordpress),并且 .com 已被 google 索引,我想重定向所有 *.com 链接到 www.mysite.org 链接也所有非 www 的 .org 链接到 www.mywebsite.org

我已经这样做了,但没有任何效果:

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS_HOST} ^(www\.)?mywebsite\.com$ [NC]
RewriteRule ^(.*)$ http://www.mywebsite.org/$1 [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

我在这里做错了什么? 谢谢你

【问题讨论】:

  • “我在这里做错了什么?” - 你在发明你自己的变量。 %{HTTPS_HOST} 不是东西。
  • 应该是HTTP_HOST

标签: php wordpress .htaccess


【解决方案1】:
RewriteCond %{HTTPS_HOST} ^(www\.)?mywebsite\.com$ [NC]
RewriteRule ^(.*)$ http://www.mywebsite.org/$1 [R=301,L]

如 cmets 中所述,HTTPS_HOST 不存在,应该是 HTTP_HOST。因此,上述条件将无法匹配并且不会发生重定向。

因此,如果您更正了上述变量,那么这个应该可以将所有流量从mywebsite.com 重定向到www.mywebsite.org,同时保持 URL 路径。

但是,由于这是 WordPress,您应该避免手动编辑属于前端控制器的指令,即。 # BEGIN WordPress# END WordPress 注释标记之间的代码。您添加的任何重定向都应 `.htaccess 文件顶部的# BEGIN WordPress 块之前。

这也不会重定向 .org 域的非 www 版本。

如果您只有这 2 个域,那么您可以通过检查请求的主机名 不是 规范主机名(即不是 www.mywebsite.org)并相应地重定向来简化重定向。

请尝试以下方法:

Options +FollowSymlinks

# Canonical redirect
RewriteCond %{HTTP_HOST} !^www\.mywebsite\.org$
RewriteRule (.*) http://www.mywebsite.org/$1 [R=302,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
<IfModule>
# END WordPress

CondPattern 上的! 前缀否定了正则表达式,因此条件只有在不匹配时才成功。

使用 302(临时)重定向进行测试,只有在您确定一切正常时才更改为 301(永久) - 以避免潜在的缓存问题。

在测试之前确保您已清除浏览器缓存。

请注意,您正在重定向到 HTTP(不是 HTTPS)——这是故意的吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2018-07-16
    相关资源
    最近更新 更多