我有一个客户端项目需要将特定域名重定向到另一个目录,而该站点的其余部分是标准的WordPress安装。
我的重定向似乎写得正确,并且位于htaccess文件的最顶层:
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} ^old_domain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.old_domain\.com$ [OR]
RewriteRule ^/?$ "http\:\/\/www\.new_domain\.com\/directory\/" [R=301,L]
问题在于它不会重定向http://old_domain.com/index.html
相反,它将用户发送到WP的404页面。
我做错了什么?
更新
在收到其他有用的建议后,我认为还有一些额外的背景。
这是一个房地产项目。主WP站点(new_domain.com)用于公寓销售,他们有一个单独的外部站点用于公寓租赁。
他们有第三个遗留域名(old_domain.com),他们想要重定向到门户网站页面(new_domain.com/directory),用户可以选择购买或租用,然后前往相应的网站。
因此,我们不希望重定向所有请求,只是使用旧域的任何请求。
答案 0 :(得分:1)
以下规则应该有效。它应该将所有请求从www.old_domain.com
和http://old_domain.com
重定向到http://www.new_domain.com/directory
RewriteEngine On
RewriteRule ^(.*)$ http://www.new_domain.com/directory/$1 [R=302, L]
当您确定重定向有效时,将302
更改为301
编辑:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old_domian.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.old_domain.com$
RewriteRule (.*)$ http://www.new_domain.com/directory/$1 [R=302,L]
答案 1 :(得分:0)
您必须拥有RewriteEngine On
。你可以巩固这两个www。和非www。试验。不要在最后一次RewriteCond之后输入[OR]。
RewriteCond %{HTTP_HOST} ^(www\.)?old_domain\.com$
new_domain.com是"附加组件"到old_domain.com,以便两者都通过相同的.htaccess文件,但使用不同的域名?或者这些物理上是独立的系统,有自己的.htaccess文件?也就是说,哪些URL将通过此.htaccess文件传递?
您当前的代码会将old_domain.com上的任何重定向到new_domain.com上的/directory/<original URI+Query String>
,并告诉搜索引擎和用户更新其条目和书签。这就是你想要的吗?