重定向.htaccess中的301不接受斜杠

时间:2012-10-01 23:06:58

标签: wordpress .htaccess

我有一个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/

我错过了什么?

2 个答案:

答案 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/