1

我有一个 WordPress 博客,我正在尝试重定向到一个新域。301 重定向有效,但它重定向到 newdomain.comnew-post 而不是 newdomain.com/new-post。

不知何故,它正在剥离斜线。这是代码:

# 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

Redirect 301 /old-post/ http://www.newdomain.com/new-post/

我错过了什么?

4

2 回答 2

0

www.newdomain.com除非站点上还发生了重定向,否则不应发生这种情况。您需要确保不会发生这种情况。

另一种可能性是 mod_alias(Redirect指令)和 mod_rewrite(wordpress 的所有重写规则)可能会相互干扰。两者都应用于相同的 URI(当它/old-post/位于相同的 URL 文件映射过程管道中时。您可以尝试Redirect在完全应用 wordpress 规则之前删除并坚持使用 mod_rewrite。尝试类似:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-post/(.*)$ http://www.newdomain.com/new-post/$1 [L,R=301]
</IfModule>

# 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
于 2012-10-01T23:17:27.710 回答
0

这可能不是这个确切场景的解决方案,但它确实解决了斜杠字符从它重定向到的 URL 中删除的问题。

我的代码与此类似:

Redirect 301 / http://www.newdomain.com
Redirect 301 /old-post/ http://www.newdomain.com/new-post/

解决方案是在第一行之后添加一个斜杠:

Redirect 301 / http://www.newdomain.com/
Redirect 301 /old-post/ http://www.newdomain.com/new-post/

也可以尝试:

Options +FollowSymlinks
RewriteEngine on
RedirectMatch 301 ^/old-post/ http://www.newdomain.com/new-post/
于 2021-02-06T11:20:01.607 回答