我需要网站重定向方面的帮助,我有两个域:mywebsite.com和mywebsite.org,它们都指向同一个网站(wordpress(,并且.com已经被谷歌索引,我想将所有*.com链接重定向到www.mysite.org链接,也将所有非www的.org链接重定向到www.myebsite.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]
我做错了什么?谢谢
RewriteCond %{HTTPS_HOST} ^(www.)?mywebsite.com$ [NC] RewriteRule ^(.*)$ http://www.mywebsite.org/$1 [R=301,L]
如注释所示,HTTPS_HOST
不存在,应该是HTTP_HOST
。因此,上述条件将无法匹配,并且不会发生重定向。
因此,如果您更正了上面的变量,那么这个应该可以将所有流量从mywebsite.com
重定向到www.mywebsite.org
,并保持URL路径。
然而,由于这是WordPress,您应该避免手动编辑作为前端控制器一部分的指令,即# BEGIN WordPress
和# END WordPress
注释标记之间的代码。添加的任何重定向都应该在`.htaccess文件顶部的# BEGIN WordPress
块之前。
这也不会重定向.org
域的非www版本。
如果你只有这两个域,那么你可以通过检查请求的主机名是而不是规范主机名(即不是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(-这是故意的吗?