我有一个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/
我错过了什么?
答案 0 :(得分:0)
除非在www.newdomain.com
网站上发生重定向,否则不应该发生这种情况。你需要确保没有发生这种情况。
另一种可能性是mod_alias(Redirect
指令)和mod_rewrite(wordpress的所有重写规则)可能相互干扰。两者都应用于相同的URI(当它在同一个URL文件映射过程管道中为/old-post/
时。您可以尝试删除Redirect
并坚持使用mod_rewrite,然后再应用wordpress规则。尝试类似的东西:
<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
答案 1 :(得分: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/