【问题标题】:why my 301 redirect is not work?为什么我的 301 重定向不起作用?
【发布时间】:2015-03-30 02:38:41
【问题描述】:

我有一个使用 wordpress 的博客。我更改了域名,所以我想对所有请求进行 301 重定向。

我的.htaccess 文件:

# 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]
RewriteCond %{HTTP_HOST} ^old.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.old.com$ 
RewriteRule ^(.*)$ http://www.new.org/$1 [R=301,L]
</IfModule>


# END WordPress

缩进的三行是为了域名更改新增的。

它只能将old.comwww.old.com重定向到www.new.org,但不能将old.com/XXX重定向到www.new.org/XXX

我认为原来的规则与新添加的规则有冲突。但是不知道怎么改。

【问题讨论】:

    标签: .htaccess http-status-code-301 url-redirection


    【解决方案1】:

    您不应该修改# BEGIN WordPress# END WordPress 之间的任何内容。这只是 WordPress 的禁忌之一。 WordPress 将覆盖这两个条目之间的任何内容,因此请在其上方或下方放置代码以确保不会删除任何内容。

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^old.com$ [NC,OR]
    RewriteCond %{HTTP_HOST} ^www.old.com$ 
    RewriteRule ^(.*)$ http://www.new.org/$1 [R=301,L]
    </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
    

    【讨论】:

    • 新规则是否应该放在&lt;IfModule&gt;RewriteEngine On之间?
    • 不,不要修改这两个 cmets 之间的任何内容。只需将任何规则放在 WordPress 块的上方或下方即可。
    • 谢谢,但也许它不起作用,最后我添加一个新的&lt;IfModule&gt; 部分并在其中添加RewriteEngine On,它可以工作。该文件在github中.htaccess
    猜你喜欢
    • 1970-01-01
    • 2011-11-08
    • 2016-05-14
    • 2014-02-27
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多