如何将旧域重定向到新域?

时间:2017-06-10 20:35:40

标签: wordpress .htaccess redirect mod-rewrite

这是我的服务器.htaccess内容。我有一个由Wordpress提供支持的网站。

# 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]

# Convert old permalink structure to the new one
RedirectMatch 301 ^/(\d+)$ http://example.com/?p=$1
RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(?!page/)(.+)$ http://example.com/$4

# Redirect all requests to .com
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule ^/(.*) http://example.com/$1 [L,R=301]

</IfModule>

# END WordPress

我的问题是关于用于将请求重定向到.com的两行,这些行以这种方式行事:

http://example.org/post_name/ ==&gt; http://example.compost_name

正如您所看到的,tld和URI之间的新URL中缺少 / 。我也检查了这条规则,但没有影响结果:

RewriteRule ^ http://example.com%{HTTP_URI} [L,R=301]

请帮我写一个合适的重定向规则。

1 个答案:

答案 0 :(得分:1)

对我来说看起来很好,并且不应该以这种方式重定向。我想你只是在你的浏览器中缓存了破碎的重定向。尝试清除缓存并再次测试。您可以在重新测试时将重定向设置为302而不是301,这是一个临时重定向,可能没有缓存。

<强>更新

在OP的进一步调查中,结果发现服务器重定向与.htaccess重写规则冲突并阻止其正常工作。删除这些重定向解决了这个问题。